프로그래머스 SQL 문제를 풀던 중 잘못된 게 없는 거 같은데 계속 틀렸다고 나와서
GPT선배에게 코드 리뷰 요청드렸더니 ORDER BY 절이 잘못되었다고 답변 주셨다.
관련 문제 - [프로그래머스] 진료과별 총 예약 횟수 출력하기
내가 제출했던 코드
select mcdp_cd as 진료과코드, count(mcdp_cd) as 5월예약건수
from appointment
where apnt_ymd > '2022-04-30' and apnt_ymd < '2022-06-01'
group by mcdp_cd
order by '5월예약건수' asc, '진료과코드' asc
-- 별칭에 따옴표 사용
결론부터 정리하자면,
- ORDER BY 절에서 별칭(alias) 사용은 가능
- 그러나, 별칭은 그대로 줘야 하며 따옴표를 사용하면 안 됨
select mcdp_cd as 진료과코드, count(mcdp_cd) as 5월예약건수
from appointment
where apnt_ymd > '2022-04-30' and apnt_ymd < '2022-06-01'
group by mcdp_cd
order by 5월예약건수 asc, 진료과코드 asc
컬럼명에 따옴표를 사용하면 안 되는 이유
- '5월예약건수'는 컬럼명이 아니라 단순 문자열 '5월예약건수'로 인식됨
- 그렇다면? 당연히 정렬 기준이 맞지 않아 결과가 이상하게 나옴
굳이굳이 컬럼명을 다르게 표현하고 싶다면
- MySQL에서는 백틱(`)
- PostgreSQL 또는 Oracle에서는 큰따옴표(")
ORDER BY 5월예약건수; -- 별칭 사용
ORDER BY `5월예약건수`; -- MySQL 전용
ORDER BY "5월예약건수"; -- PostgreSQL/Oracle 전용