inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[백문이불여일타] 데이터 분석을 위한 중급 SQL 문제풀이

4번 문제 풀이

4번문제. COUNT(컬럼을 submission 대신 hacker_id로..

289

[SQL 실전반 11기] 큐리

작성한 질문수 2

0

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로 풀었어도 상관없었던건지? 속에 품은 차이가 있는지 궁금합니다.

 

sql

답변 1

1

지식공유자 J

다린님, 안녕하세요! 문제 푸시느라 고생 많으셨습니다.

이 문제에서 요구하는 바는 '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