-
카테고리
-
세부 분야
데이터 분석
-
해결 여부
미해결
서브쿼리 해커랭스 Challenges 풀이
22.12.05 16:55 작성 조회수 196
0
WITH COUNTER AS
SELECT H.hacker_id AS hacker_id, H.name AS name, COUNT(*) AS challenges_created
FROM Hackers AS H LEFT JOIN Challenges AS C ON H.hacker_id = C.hacker_id
GROUP BY hacker_id
SELECT hacker_id, name, challenges_created
FROM COUNTER
WHERE challenges_created NOT IN (SELECT challenges_created FROM(SELECT *
FROM COUNTER
GROUP BY challenges_created HAVING COUNT(*)>=2))
OR challenges_created >= (SELECT challenges_created FROM COUNTER ORDER BY challenges_created LIMIT 1)
ORDER BY challenges_created DESC, hacker_id;
이렇게 풀면 왜 답이 안나오는지 잘 모르겠습니다.ㅠㅠ
challenges_created값이 중복일때 제거해주는 부분 NOT IN 절에 오류가 있는 것 같ㅇ느데 어떤 부분이 틀린걸까요
답변을 작성해보세요.
1
지식공유자 J
지식공유자2022.12.05
WITH 문은 괄호와 함께 써 주셔야 합니다. WITH AS ( SELECT 쿼리 )
WITH 문 쿼리와, NOT IN 절 쿼리 두 부분 모두 GROUP BY를 사용한 방법에 오류가 있습니다. GROUP BY로 그룹을 묶어주었을 때 SELECT 절에는 그룹을 묶는 기준 컬럼(GROUP BY 절에 쓴 컬럼)과, 그룹별로 적용된 집계함수(MAX, MIN, COUNT 등)만 쓸 수 있습니다.
그러므로 WITH 문 쿼리에서는 GROUP BY 절에 name도 같이 써 줘야 하고, NOT IN 절 쿼리에서는 SELECT *를 사용할 수 없습니다.
답변 1