WHERE 절에 서브쿼리를 만들어서 문제를 풀 수 있나요?
265
작성한 질문수 45
안녕하세요! 강의 잘 듣고 있어요.
다름이 아니라 혹시 FROM절이 아닌 WHERE 절에 서브쿼리를 넣어서 문제를 풀 수 있는 방법이 있을까요?
제가 아래와 같이 WHERE절에 서브쿼리를 넣었는데, 어떤 점이 잘못 되었는지 피드백 주시면 감사드릴게요.
SELECT H.hacker_id, H.name, SUM(S.score)
FROM Hackers H
INNER JOIN Submissions S
ON H.hacker_id = S.hacker_id
WHERE S.score = (
SELECT H.hacker_id, S.challenge_id, MAX(S.score)
FROM Submissions
GROUP BY hacker_id, challenge_id
) AS A
GROUP BY H.hacker_id, H.name
HAVING SUM(S.score) > 0
ORDER BY SUM(S.score), H.hacker_id;
답변 1
0
WHERE 절에서 에러가 나는 것은 두 항 중 첫번째 것은 1개의 값(s.score)이고, 두 번째 것은 3개의 값(h.hacker_id, s.challenge_id, max(s.score))이라서 서로 비교가 불가능하기 때문입니다.
서브쿼리의 SELECT 절에 s.score 컬럼과 비교할 단 하나의 컬럼만 명시를 하셔야 합니다.
그럼 max(s.score)만 남겨야 하겠다는 생각을 하실 수도 있을 것 같은데요.
이 경우에는 동일한 hacker_id의 점수끼리 비교하도록 붙이는 과정이 빠지게 됩니다.
서브쿼리는 서브쿼리 밖에서 일어나는 INNER JOIN 등과 관계 없이 단독으로 작동하기 때문입니다.
이 문제에서는 WHERE 절보다는 FROM 절에 서브쿼리를 사용하는 것이 훨씬 명확한 풀이인 듯 합니다.
강의기간 연장문의
0
107
2
HackerRank : Weather Observation Station 11 문제풀이
0
124
1
SET4의 3번 자리바꾸기 문제 다른 풀이
0
197
1
set 3의 3번 문제- 데이터의 개수가 짝수일 때 질문
0
277
2
set 1 - 2번 문제풀이
0
270
1
세트2번 Binary Tree Nodes 질문입니다!
0
231
2
고급문제풀이set1 3번 문제
0
255
2
고급문제풀이 3번 INNERJOIN 활용시 오류
0
274
1
회사일하다 보니까 다 못듣고 수강기간이 다끝나가는데 .,. 수강기간 연장은 어떻게 할수 있나요?ㅜㅜ
0
325
1
[Weather 20 ] 2번째 쿼리도 따라 했는데 왜 다 실패일까요?
0
382
1
[Weather 20] 따라 했는데 왜 작동 안해요?
0
283
1
weather-20 왜 작동 안하는건가요?
0
234
1
Ollivander's Inventory 윈도우 함수 min() over
0
320
1
LeetCode 626. Exchange Seats 리트코드 제출 오류
0
510
2
섹션4에 3번 문제풀이 질문
0
387
2
SQL Project Planning 풀이 관련 문의
0
589
2
섹션 1번 4번문제 풀이
1
290
1
섹션1 2번 문제풀이 강의
0
309
1
set2 - 1 같게 작성했는데 답이 이상합니다.
0
289
1
max함수를 써서 풀지는 못하나요?
0
306
1
윈도우 함수를 이용해서 풀고 싶어서 써봤습니다. 더 간단하게 줄일 수 있을까요?
0
265
1
(Hacker Rank)Binary Tree 문제 질문
0
329
1
쿼리 두개로 작성하고 싶지 않아 하나로 어떻게든 만들어 봤습니다.
0
300
1
이런 풀이는 왜 안되는지 궁금해요
0
280
1





