📒 SQLD: 노랭이

[SQLD / 노랭이] p.49: 28번

haeriyouu 2025. 3. 1. 22:46
ID
100
100
200
200
200
999
999
SELECT ID 
FROM TBL 
GROUP BY ID 
HAVING COUNT(*) = 2 
ORDER BY (CASE WHEN ID = 999 THEN 0 ELSE ID END)

🔎 코드 분석

1️⃣ GROUP BY ID: ID 값을 기준으로 그룹화

2️⃣ HAVING COUNT(*) = 2: 그룹 내 개수가 2인 ID만 선택

ID 값 개수
100 2 ✔️
200 3 ❌ (제외)
999 2 ✔️

🟰 ID 100과 999만 선택

3️⃣ ORDER BY (CASE WHEN ID = 999 THEN 0 ELSE ID END):

  - ID = 999 이면 정렬 우선순위를 0으로 설정 🟰 가장 먼저 정렬됨

  🧐 이게 무슨 소리나면:

   - ID = 999 ➡️ 정렬 값이 0 ➡️ 제일 위로 정렬됨

    💡 정렬 값이 0이다 🟰 0순위이다!

   - ID = 100 ➡️ 정렬 값이 100 ➡️ 그 다음에 정렬됨

 

✏️ 정답: 2번

ID
999
100

 

더보기
더보기

HAVING COUNT(*) = 2부터 이해를 잘못 했었다😓 모든 열을 다 세어서 2라면 코드를 진행하라는 건가..? 했었다🥲 완전 잘못 이해한걸로... 

 ORDER BY (CASE WHEN ID = 999 THEN 0 ELSE ID END) 부분도 ID가 999면 0인것과 ELSE문도 이해 했었지만 둘을 잘못 연관 지어서 999와 100의 순서가 바뀔때 ㄴㅇㄱ였다...😂

'📒 SQLD: 노랭이' 카테고리의 다른 글

[SQLD / 노랭이] p. 62: 49번  (0) 2025.03.03
[SQLD / 노랭이] p.42: 19번  (0) 2025.03.02
[SQLD / 노랭이] p.63: 50번  (1) 2025.03.01
[SQLD / 노랭이] p.50: 30번  (0) 2025.02.28
[SQLD / 노랭이] p.121: 111번  (0) 2025.02.28