4번문제. COUNT(컬럼을 submission 대신 hacker_id로..
289
작성한 질문수 2
SELECT hac.hacker_id
,hac.name
FROM submissions AS sub
INNER JOIN challenges AS cha ON sub.challenge_id = cha.challenge_id
INNER JOIN difficulty AS dif ON cha.difficulty_level = dif.difficulty_level
INNER JOIN hackers AS hac ON hac.hacker_id = sub.hacker_id
WHERE sub.score = dif.score
GROUP BY sub.hacker_id, hac.name
HAVING COUNT(sub.hacker_id) >1
ORDER BY COUNT(sub.hacker_id) DESC, sub.hacker_id
----
안녕하세요. 4번문제 어렵게어렵게 풀었습니다 하아
정답에선 COUNT와 HAVING 의 기준을 submission_id로 풀어주셨는데,
어쩌다 보니 저는 hacker_id 로 짰고, 통과가 됐습니다.
hacker_id로 풀었어도 상관없었던건지? 속에 품은 차이가 있는지 궁금합니다.
답변 1
1
다린님, 안녕하세요! 문제 푸시느라 고생 많으셨습니다.
이 문제에서 요구하는 바는 '2개 이상의(1개 초과의) 챌린지에서 만점을 받은 해커를 찾는 것'으로,
HAVING 절에 COUNT(DISTINCT submission_id) 또는 COUNT(DISTINCT challenge_id)을 써 주는 것이 정확히 필터링하는 방법입니다.
GROUP BY hacker_id로 묶어 준 후에 GROUP BY에 쓰인 hacker_id를 다시 사용해 COUNT를 하면
결국 각 hacker_id에 해당하는 row 수를 세는 것과 동일한 명령이 됩니다.
COUNT(*)와 같은 결과가 나오는 거죠.
그런데 이미 GROUP BY를 하기 전에 만점에 해당하는 데이터로만 구성되어 있는 테이블을 만들어 놓았고,
그 테이블에서 연산을 하면 하나의 hacker_id의 row 수 = 만점 맞은 챌린지 수 가 되기 때문에
COUNT(hacker_id)를 해도 정답이 된 것입니다.
만약 COUNT(DISTINCT hacker_id)를 썼다면 row 수가 아니라 unique한 hacker_id를 뽑아내게 되는데,
hacker_id 당 unique한 hacker_id 수는 1개씩이겠죠? 그래서 이 경우는 정답이 될 수 없습니다.
섹션 4번에 2번 문제 질문입니다.
0
109
2
4번 문제
0
91
1
Top competitors 에서 having count(h.hacker_id)로 해도 되나요?
0
268
1
leetcode 620 group by 질문이요
0
211
2
강의 일시정지/ 기간연장 검토 요청
0
386
1
4번 문제 group by 질문
0
325
2
세트2 4번 문제풀이 해설에 관한 질문
0
362
2
Weather Observation Station 11_ not like 사용
0
273
1
Placements에서 LEFT JOIN 뒤에 ON 조건
0
291
1
Set2 4번문제 질문 - New Companies
0
319
1
WHERE절 안 쓰고 HAVING COUNT(D.score = S.score) > 1 쓰면 왜 안되나요?
-1
719
1
as 2 space-separated values. 무슨 말인가요???
0
436
1
Weather observation Station 11 관련 질문
1
380
2
4번문제풀이
0
458
1
섹션3. Weather Observation Station 18 문제 관련
0
379
2
섹션 2에 1,2번 문제풀이 관하여
0
438
1
기한연장문의
0
333
1
Weather observation station 11 문제 not like
-1
371
1
inner join 과 left join
1
603
1
4번 BST 문제 틀리는 이유
0
348
1
4번 문제 질문
0
295
1
620. Not Boring Movies 문제 질문드립니다
0
294
1
binary tree 질문 입니다.
0
303
1
Top Competitors 질문있습니다 ㅠㅠ
0
250
1





