개발자식

[프로그래머스] SQL, 진료과별 총 예약 횟수 출력하기 본문

Data/SQL

[프로그래머스] SQL, 진료과별 총 예약 횟수 출력하기

밍츠 2023. 6. 12. 16:57

✔︎ 문제

https://school.programmers.co.kr/learn/courses/30/lessons/132202

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

✏️ 나의 풀이

- SELECT문에 Alias에 따옴표를 붙이고 ORDER BY에서도 붙였었는데, ORDER BY에서는 지정한 Alias 그대로 작성해야 적용된다. 즉 SELECT에서 따옴표를 썼더라도 ORDER BY에서는 따옴표 빼야한다.

- 헷갈린다면 SELECT COLUMN 순서대로 ORDER BY 2, 1 이렇게 써줘도 된다. 아니면 Alias 말고 COUNT(MCDP_CD), MCDP_CD 이렇게 써줘도 된다.

SELECT MCDP_CD AS 진료과코드, COUNT(MCDP_CD) AS 5월예약건수
FROM APPOINTMENT
WHERE APNT_YMD LIKE "2022-05%"
GROUP BY MCDP_CD
ORDER BY 5월예약건수, 진료과코드

 

ORDER BY에서 따옴표를 붙이면 안되는 이유를 찾아보다 못찾아서 챗GPT한테 물어봤다.

"MySQL에서 ORDER BY 절에서 SELECT 문에 지정한 alias에 따옴표를 붙이면 안 되는 이유는 다음과 같습니다."

  1. Column Alias는 접근성을 위한 별칭입니다: SELECT 문에서 사용되는 alias는 결과 집합의 컬럼에 대한 접근성을 제공하는 데 사용됩니다. 따라서 ORDER BY 절에서 해당 alias를 사용하여 결과를 정렬할 수 있습니다.
  2. ORDER BY는 실제 컬럼을 기준으로 정렬합니다: ORDER BY 절은 컬럼 값을 기준으로 결과를 정렬하는 데 사용됩니다. 따라서 alias를 사용하여 정렬 순서를 지정할 때, 해당 alias가 실제 컬럼을 나타내는 것처럼 처리됩니다.
  3. 따옴표로 감싸면 문자열로 처리됩니다: 따옴표로 감싸면 MySQL은 해당 값을 문자열로 인식합니다. 따라서 alias를 따옴표로 감싸면 실제 컬럼 이름이 아닌 문자열로 처리되며, 예기치 않은 동작이 발생할 수 있습니다.

따라서, ORDER BY 절에서 SELECT 문에 지정한 alias를 따옴표로 감싸지 않고 사용하는 것이 올바른 방법입니다.

Comments