ORDER BY
데이터베이스에 저장된 데이터의 순서를 변경하는 것이 아니라
SELECT 문을 수행해서 데이터를 보여줄 때 변경해주는 것이다.
SELECT *
FROM Customers
ORDER BY customerid DESC;
오름차순으로 하고 싶을 때는 ASC을 사용하거나 아무것도 안 쓰면 된다. (default값이기 때문)
ORDER BY를 이용해 최댓값/최솟값 데이터 불러오기
최댓값을 보고 싶을 때는 DESC(내림차순)정렬을 한 뒤 LIMIT을 사용해서 1개만 불러온다.
SELECT *
FROM Products
ORDER BY price DESC
LIMIT 1;
최솟값을 보고 싶을 때는 ASC(오름차순)정렬을 한 뒤 LIMIT 1으로 1개만 불러온다.
SELECT *
FROM Products
ORDER BY price ASC
LIMIT 1;
ORDER BY를 이용해 데이터 상위 3개 출력
ORDER BY DESC로 내림차순 정렬 뒤 LIMIT 3을 사용한다.
SELECT *
FROM Products
ORDER BY price DESC
LIMIT 3;
HackerRank: Higher Than 75 Marks
Query the Name of any student in STUDENTS who scored higher than 75 Marks.
Order your output by the last three characters of each name.
If two or more students both have names ending in the same last three characters (i.e.: Bobby, Robby, etc.), secondary sort them by ascending ID.
SELECT Name
FROM STUDENTS
WHERE Marks > 75
ORDER BY RIGHT(Name,3), ID -- 두번째 정렬 조건을 설정하려면 , 를 사용해서 다음 조건을 작성
문자열을 자르는 함수: SUBSTR( )
- LEFT(컬럼명 또는 문자열, 문자열의 길이)
SELECT LEFT("20220222", 4)
➔ 2022
- RIGHT(컬럼명 또는 문자열, 문자열의 길이)
SELECT RIGHT("20220222", 4)
➔ 0222
- SUBSTRING(컬럼명 또는 문자열, 시작위치, 길이)
= SUBSTR( )
SUBSTR("20220222", 1, 4)
➔ 2022
SUBSTR("20220222", 5)
➔ 0222
HackerRank: Weather Observation Station 15
Query the Western Longitude (LONG_W) for the largest Northern Latitude (LAT_N) in STATION that is less than 137.2345 Round your answer to 4 decimal places.
SELECT ROUND(long_w,4) --소수점 4자리까지만 출력
FROM station
WHERE lat_n < 137.2345
ORDER BY lat_n DESC
LIMIT 1;
소수점 처리
- CEIL( ) : 올림
SELECT CEIL(5.5)
➔ 6
- FLOOR( ) : 내림
SELECT FLOOR(5.5)
➔ 5
- ROUND( ) : 반올림
ROUND(2.018395, 4)
➔ 2.0184