• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 분석

  • 해결 여부

    미해결

set 1번 2번 문제 입니다.

21.05.10 22:51 작성 조회수 114

2

안녕하세요 강사님 강의 잘 듣고 있습니다!

set 1번의 2번 문제의 해석을 듣는 중 

{

inner join hackers as h on h.hacker_id = t.hacker_id

group by h.hacker_id, h.name

having total_score != 0

order by total_score desc, h.hacker_id

}

부분에서 왜 group by시 h.name도 포함되는 모르겠습니다

h.hacker_id와 h.name은 각각 하나씩 연결되었음으로 h.name이 없어도 실행 되어야 할 것 같습니다.

또한 h.name을 제거하였을때 error가 발생하였는데 왜 발생하는지도 모르겠습니다.

좋은 강의 올려주셔서 감사합니다

답변 1

답변을 작성해보세요.

2

GROUP BY을 할 경우 SELECT 절에는 그룹을 묶는 기준이 되는 컬럼과, 다른 컬럼의 집계값만 쓸 수 있습니다. 

이 문제를 푸는 쿼리의 SELECT 절은 다음과 같은데요.

SELECT h.hacker_id, h.name, SUM(score_max) total_score

만약 GROUP BY 절에서 h.name을 제외한다면 이런 식으로 SELECT 절에서 h.name을 집계한 값을 써 주어야 합니다.

SELECT h.hacker_id, MIN(h.name), SUM(score_max) total_score

말씀하신대로 hacker_id 와  name이 1:1로 연결되어 있으므로 집계함수는 MIN, MAX, AVG 등 무엇을 사용하든 같은 값이 출력됩니다.

rbfl0623님의 프로필

rbfl0623

질문자

2021.06.01

이해되었습니다!

감사합니다!