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
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
데이터베이스에는 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 |