ORDER BY
조회를 할 때 어떤 Column을 기준으로 오름차순으로 조회할지, 내림차순으로 조회할지 설정할 수 있다.
# Syntax
SELECT column1, column2, ...
FROM table_name
ORDER BY column1, column2, ... ASC | DESC;
# 실제 사용
SELECT StudentID, StudentName, Age, Address
FROM Students
ORDER BY Age ASC;
그러면 다음과 같이 표 형태로 데이터를 확인할 수 있다.
StudentID | StudentName | Age | Address |
487 | 정OO | 20 | Seoul |
592 | 김OO | 20 | Gyeongju |
195 | 박OO | 20 | Busan |
343 | 경OO | 21 | Jeju |
... |
Age(나이)를 기준으로 오름차순으로 정렬한 결과이다.
데이터를 보면 Age가 같은 경우가 존재하는 것도 확인할 수 있는데,
Age가 같을 때 StudentID가 내림차순으로 조회하고 싶다면 다음과 같이 작성하면 된다.
SELECT StudentID, StudentName, Age, Address
FROM Students
ORDER BY Age ASC, StudentID DESC;
StudentID | StudentName | Age | Address |
592 | 김OO | 20 | Gyeongju |
487 | 정OO | 20 | Seoul |
195 | 박OO | 20 | Busan |
343 | 경OO | 21 | Jeju |
... |
다음과 같이 Age가 같으면 StudentID가 내림차순으로 정렬된 것을 확인할 수 있다.
여기까지 배웠다면 프로그래머스에서 다음 문제를 풀어볼 수 있을 것이다.
전화번호가 없는 경우 NONE으로 출력하는 것은 다음처럼 작성하면 된다.
COALESCE(TLNO, 'NONE')
https://school.programmers.co.kr/learn/courses/30/lessons/132201
데이터베이스에는 Column 순서가 환자번호가 먼저이지만
환자번호, 환자이름, 성별코드, 나이, 전화번호
출력은 환자이름을 먼저 하기로 되어있다.
환자이름, 환자번호, 성별코드, 나이, 전화번호
따라서, 다음과 같이 작성하면 된다.
SELECT PT_NAME, PT_NO, GEND_CD, AGE, COALESCE(TLNO, 'NONE')
FROM PATIENT
그다음 조건인 '12세 이하' '여자' 이므로 AGE는 12보다 작거나 같고, GEND_CD는 W가 되어야한다.
SELECT PT_NAME, PT_NO, GEND_CD, AGE, COALESCE(TLNO, 'NONE')
FROM PATIENT
WHERE GEND_CD = 'W' AND AGE <= 12
마지막으로 나이를 기준으로 내림차순이지만, 나이가 같으면 환자이름을 기준으로 오름차순이다.
따라서 ASC와 DESC를 사용하여 다음과 같이 작성하면 된다.
SELECT PT_NAME, PT_NO, GEND_CD, AGE, COALESCE(TLNO, 'NONE')
FROM PATIENT
WHERE GEND_CD = 'W' AND AGE <= 12
ORDER BY AGE DESC, PT_NAME ASC;
ASC는 Default값이므로 생략해도 된다.
또한, 숫자는 오름차순과 내림차순이 직관적으로 이해되지만
문자는 어떻게 될까?
문자 같은 경우에는 알파벳, 또는 가나다 순으로 순서가 정해진다고 알아두면 된다.
'💻 소프트웨어(SW) > MySQL' 카테고리의 다른 글
[MySQL] 3. Insert Into, Update, Delete (0) | 2024.02.24 |
---|---|
[MySQL] 1. Select, Select Distinct, Where, And, Or, Not이란 (0) | 2024.02.22 |
[MySQL] 0. SQL이란? (0) | 2024.02.21 |