728x90
반응형
Top Competitors
discussion을 보면서 여러 개의 조인을 동시에 쓰는 것과
on 대신 using (같은 칼럼명) 을 쓰는 것까지는 기억했다.
count()도 위치가 where에 있으면 안 되는 것까지는 알겠으나,,
어떻게 손을 대야 할지를 모르고 멈춘 후 지피티에게 물었다.
수정 전
select h.hacker_id, h.name
from kackers h
join submissions s using(hacker_id)
join challenges c using(challenge_id)
join difficulty d using(difficulty_level)
where count(s.score = d.score) as t_s > 1 -- 여기가 문제인데.. 하.. 모르겠더라
order by t_s desc, hacker_id asc;
- 집계함수 사용시 오더바이 반드시 써줄 것
- 그룹바이 조건은 해빙으로 해줄 것.
수정 후
SELECT
h.hacker_id,
h.name
FROM
hackers h
JOIN -- 이렇게 조인을 한 번에 쓰는 것도 가능함.
submissions s USING(hacker_id)
JOIN
challenges c USING(challenge_id)
JOIN
difficulty d USING(difficulty_level)
where s.score = d.score -- where에 조건을 두면서
GROUP BY -- 그룹바이는 집계함수 사용 시, 반드시 아니면 전체 데이터로 계산됨.
h.hacker_id, h.name
HAVING
count(s.submission_id) > 1 -- 제출한 개수가 1개 초과한 경우로 생각
ORDER BY
count(s.submission_id) DESC, -- 오더 바이에서는 집계함수 가능
h.hacker_id ASC;
728x90
반응형
'Data Science > MySQL' 카테고리의 다른 글
[HackerRank sql] where절과 from절 서브쿼리 차이 (0) | 2025.01.28 |
---|---|
[HackerRank sql] 집계함수 내에도 필요하면 distinct 쓸 것. (0) | 2025.01.26 |
[HackerRank sql] group by가 아닌 서브쿼리 조건으로 넣을 것 (1) | 2025.01.25 |
[HackerRank sql] join between and를 써서 (0) | 2025.01.25 |
[HackerRank sql] 중간값 구하기. cte (0) | 2025.01.25 |