SET_문제 4번_TOP Competitors 관련 문의 드립니다.
249
작성한 질문수 1
안녕하세요. 좋은 강의에 감사 드립니다.
저 같은 경우, 4번 문제를 다음과 같이 해결을 하고자 하였으나 정상적으로 진행되지 않았습니다.
SELECT H.hacker_id, H.name
FROM Submissions AS S
INNER JOIN Challenges AS C ON S.challenge_id = C.challenge_id
INNER JOIN Difficulty AS D ON C.difficulty_level = D.difficulty_level
INNER JOIN Hackers AS H ON H.hacker_id = S.hacker_id
GROUP BY H.hacker_id, H.name
HAVING S.score = D.score AND COUNT(S.submission_id) > 1
ORDER BY COUNT(S.submission_id) DESC, H.hacker_id ASC
문제 풀이를 보면 "S.score = D.score" 를 GROUP BY 전에 진행하는데요.
그룹핑을 하고 조건을 주면 안되는 이유가 잘 이해되지 않습니다. 설명 부탁 드릴 수 있을지요?
답변 1
4
안녕하세요 붉은은짱님
HAVING의 경우 GROUP BY를 진행한 후 실행되는 구문이기 때문에 GROUP BY로 그룹핑이 된 결과값에 대해서만 조건을 걸어줄 수 있습니다.
위 예시에서는 이미 GROUP BY에서 H.hacker_id와 H.name으로 그룹이 구성된 상태이기 때문에 S.score, D.score라는 개별 데이터에 대해서는 확인이 불가능 한데요.
이해가 어려우실 수도 있을 것 같아 조금 추상적인 예시를 들어 설명드려보겠습니다.
예를 들어, 올림픽에 개인전으로 출전한 선수들끼리는 개인 기록을 비교하여 확인할 수 있지만, 단체적에 출전한 선수들끼리는 개인 기록을 비교하지 않고 팀 기록을 서로 비교하여 우위를 정하는 것과 비슷하다고 생각해주시면 될 것 같습니다.
단체전에서는 팀으로 이미 선수들이 묶여있기 때문에, '팀 이름을 가나다 순으로 비교'하거나, '팀원들의 기록 평균이 A팀과 B팀에서 어떻게 차이가 나는지'는 확인 할 수 있지만, A팀의 1번 선수의 기록과 B팀의 5번 선수의 기록을 1:1로 비교하지는 않는 것(또는 규정상 그렇게 할 수 없는 것)이죠.
정리하자면 개별 데이터들을 비교하고 싶으면 WHERE문에서 조건을 사용하고, 그룹별로 묶인 상태에서 무언가를 비교하고 싶으면 HAVING을 사용하시면 됩니다.
도움이 되셨길 바랍니다.
감사합니다.
섹션 4번에 2번 문제 질문입니다.
0
107
2
4번 문제
0
91
1
Top competitors 에서 having count(h.hacker_id)로 해도 되나요?
0
266
1
leetcode 620 group by 질문이요
0
209
2
강의 일시정지/ 기간연장 검토 요청
0
386
1
4번 문제 group by 질문
0
325
2
세트2 4번 문제풀이 해설에 관한 질문
0
359
2
Weather Observation Station 11_ not like 사용
0
270
1
Placements에서 LEFT JOIN 뒤에 ON 조건
0
289
1
Set2 4번문제 질문 - New Companies
0
318
1
WHERE절 안 쓰고 HAVING COUNT(D.score = S.score) > 1 쓰면 왜 안되나요?
-1
714
1
as 2 space-separated values. 무슨 말인가요???
0
434
1
Weather observation Station 11 관련 질문
1
378
2
4번문제풀이
0
458
1
섹션3. Weather Observation Station 18 문제 관련
0
378
2
섹션 2에 1,2번 문제풀이 관하여
0
435
1
기한연장문의
0
332
1
Weather observation station 11 문제 not like
-1
371
1
inner join 과 left join
1
600
1
4번 BST 문제 틀리는 이유
0
347
1
4번 문제 질문
0
291
1
620. Not Boring Movies 문제 질문드립니다
0
290
1
binary tree 질문 입니다.
0
301
1
Top Competitors 질문있습니다 ㅠㅠ
0
248
1





