Results ordering - 결과 정렬하기
hyperskill - Results ordering 원문
당신이 호텔 예약 서비스 데이터베이스에 책임이 있다고 가정 해 봅시다.
당신은 이미 고객이 정한 기준에 따라 호텔들에 대한 정보를 담고 있는 줄들의 집합을 선택하는 법에 대해 압니다.
여전히, 선택지에 많은 호텔이 있으므로,
호텔들을 가격, 별점, 다른 속성, 심지어는 고객이 요청한 표현식 에 의해 정렬 해야 합니다.
SQL 에서 이것이 어떻게 완료 될 수 있는지 봅시다.
ORDER BY - 선택 속성에 의해 정렬
데이터에 쿼리를 사용할 때, SQL은 쿼리의 계산 결과 나오는 레코드(줄) 들에 대한 기본적인 정렬을 제공하지 않습니다.
계산된 줄들의 순서를 지정하기 위해서, 쿼리에서 ORDER BY
절을 사용해야 합니다.
밑의 예제를 함께 봅시다 :
SELECT
hotel_id,
hotel_name,
price_per_night,
price_for_early_check_in,
rating,
stars
FROM
hotels
ORDER BY
price_per_night
;
SELECT 구문의 끝에, price_per_night
속성에 의해 결과 줄들이 정렬되도록 지정했습니다.
아마 당신은 표현식으로 줄들을 잘 정렬 할 겁니다.
그 다음 예시로, 밑의 쿼리에서, 우리는 hotels 테이블 결과를 2박 가격 과 조기 체크인 에 의해 정렬합니다. :
SELECT
hotel_id,
hotel_name,
price_per_night,
price_for_early_check_in,
rating,
stars
FROM
hotels
ORDER BY
price_per_night*2 + price_for_early_check_in
;
Ascending and descending order - 오름차순, 내림차순 정렬
정렬은 비교 연산자 (<
) 에 대한 표현식 타입의 정의에 기초를 두고 있습니다.
이것은 더 크거나, 더 작은 값이 리스트 내부에서 더 높은 곳에 위치해야 하는지 지정할 수 있습니다.
예시 :
ASC (Ascending) : 더 작은 값이 리스트에서 더 높이 위치한다. - 오름차순
DESC(Descending) : 더 큰 값이 리스트에서 더 높이 위치한다. - 내림차순
예제를 살펴 봅시다 :
SELECT
hotel_id,
hotel_name,
price_per_night,
price_for_early_check_in,
rating,
stars
FROM
hotels
ORDER BY
rating DESC
;
여기, ORDER BY
절은 ORDER BY expr [ASC, DESC];
의 형태를 가지고 있습니다.
ORDER BY 키워드, 알맞은 표현식(expressino), 그리고 선택적인 키워드 ASC
, DESC
를 지닙니다.
기본적으로, 정렬은 오름차순으로 가정하기에, 이전의 쿼리 예제들에서 ASC
키워드를 생략했습니다.
오름차순, 내림차순을 정의 할 때, 기본적으로 생략 시 오름차순으로 가정하기 때문에
ASC
키워드를 생략했다.
반대의 경우,DESC
를 기입 해 줘야 한다.
Multiple expressions
한 번 가격 과 별점 두 속성에 의해 호텔이 정렬되는 쿼리를 작성 해 봅시다 :
SELECT
hotel_id,
hotel_name,
price_per_night,
price_for_early_check_in,
rating,
stars
FROM
hotels
ORDER BY
rating DESC,
price_per_night*2 + price_for_early_check_in
;
ORDER BY
절에서 1개 보다 많은 표현식이 지정되었다면,
뒤에 있는 값이 이전 값에 따라 똑같이 줄들을 정렬합니다.
후위에 있는 표현식이 전위에서 계산된 줄들을 또다시 정렬한다고 보면 되는데,
전위에서 이미 지정 된 정렬 규칙을 따르며 정렬한다.
즉, 전위 표현식에서 계산 된 줄 중 같은 값을 가진 줄들이 2개 이상 있다면,
2개 줄 내부에서 후위 표현식을 통해 또다시 정렬을 한다는 의미이다.
각 표현식은 ASC
또는 DESC
키워드를 따를 수 있습니다.
여기 예제에서, 호텔은 rating
(큰 것에서 작은 것으로) 에 의해 정렬되고,
그리고 rating
에 의한 결과가 똑같이 price
에 의해 정렬됩니다.
Syntax - 구문
만약 당신이 결과 줄들을 결과로 나오는 속성 인 표현식으로 정렬하고 싶다면,
컬럼 별칭 또는 숫자에 의한 ORDER BY
절로 이것을 해결 할 수 있습니다.
예를 들어 밑의 쿼리는 총 가격과 별점에 의해 줄들을 정렬합니다 :
SELECT
hotel_name,
price_per_night*2 + price_for_early_check_in AS total_price,
rating,
stars
FROM
hotels
ORDER BY
total_price, rating > 3 DESC
;
처음에
rating > 3
구문에 의해 별점이 3 이하인 줄들이 없어지는 줄 알았는데, 이게 아니라rating > 3
boolean 표현식에 의해1
,0
으로 계산됩니다.
따라서 별점이 3을 초과한다면, 1이 나오므로DESC
에 의해 리스트의 위에 배치 하고,
그렇지 않다면 0이 나오므로DESC
에 의해 리스트의 아래에 배치 한다는 의미 입니다.
Conclusion - 결론
ORDER BY
절은 SELECT
구문으로부터 반환 된 줄들이 직접 지정한 표현식들에 기초해
오름차순, 혹은 내림차순으로 정렬 할 수 있도록 허용 해 줍니다.
ORDER BY
절의 패턴은 이를 따릅니다 :
ORDER BY expr1 [ASC, DESC], ..., exprN [ASC, DESC]
ORDER BY
키워드에서, 표현식의 리스트는 (SELECT
쿼리의 일부에 존재하는 알맞는 별칭 혹은 숫자들) 는 선택적인 키워드ASC
,DESC
를 사용 할 수 있습니다.
'Hyperskill - 컴퓨터 CS 및 영어 독해 > Introducing to SQL' 카테고리의 다른 글
Basic UPDATE statement - 기초적인 UPDATE 문법 (0) | 2024.04.25 |
---|---|
Types of JOINs - JOIN의 종류들 (0) | 2024.04.24 |
FOREIGN KEY constraint - 외래 키 제약 조건 (2) | 2024.04.21 |
PRIMARY KEY constraint - 기본 키 제약 조건 (0) | 2024.04.20 |
Alter table - 테이블 변경하기 (1) | 2024.04.19 |