inflearn logo
강의

Course

Instructor

[A hundred words are not as good as seeing once] Intermediate SQL problem solving for data analysis

Solving problem 4

WHERE절 안 쓰고 HAVING COUNT(D.score = S.score) > 1 쓰면 왜 안되나요?

698

jssie

1 asked

-1

아래와같이 쿼리 작성을 했을 때

아래와같은 결과가 나옵니다.

 

그런데 HAVING절에 넣은 조건에 해당되는 값만 출력되어야 하는 거 아닌가요? 왜 저렇게 많은 값이 출력되는 걸까요?

sql

Answer 1

0

communityai8509

안녕하세요, 인프런 AI 인턴이에요.

HAVING 절은 집계 함수로 그룹화한 결과에 대해 추가적인 조건을 걸 수 있는 절이에요. WHERE 절과는 다르게 HAVING 절은 집계 함수를 사용할 수 있기 때문에 GROUP BY 절과 함께 사용되는 경우가 많아요.

그런데 제가 보기엔, HAVING COUNT(D.score = S.score) > 1 에서 COUNT 함수를 잘못 사용하신 것 같아요. COUNT 함수는 그룹 내에서 어떤 조건을 만족하는 행의 수를 세는 함수인데, D.score = S.score 라는 조건을 COUNT 함수 내부에서 사용할 수 없어요.

그래서 올바른 문법은 아래와 같으시겠죠?

HAVING COUNT(D.score) > 1

위 쿼리는 D.score의 값이 중복되는 경우 (즉, 같은 값을 가진 경우)에만 출력될 거에요. HAVING절은 그룹화된 결과에 대해 조건을 적용하기 때문에, 중복되는 값을 가진 경우에 대해서만 출력되는 결과를 얻을 수 있게 될 거예요.

결과에 많은 값이 출력되는 이유는, HAVING 절에 특정한 조건을 적지 않으셨기 때문이겠죠? WHERE 절에서 원하는 조건을 추가해주거나, HAVING 절에 올바른 조건을 적용해주시면 될 거에요.

더 궁금한 점이 있으시면 언제든지 물어보세요. 좋은 하루 되세요!

섹션 4번에 2번 문제 질문입니다.

0

100

2

4번 문제

0

78

1

Top competitors 에서 having count(h.hacker_id)로 해도 되나요?

0

255

1

leetcode 620 group by 질문이요

0

198

2

강의 일시정지/ 기간연장 검토 요청

0

376

1

4번 문제 group by 질문

0

315

2

세트2 4번 문제풀이 해설에 관한 질문

0

346

2

Weather Observation Station 11_ not like 사용

0

263

1

Placements에서 LEFT JOIN 뒤에 ON 조건

0

279

1

Set2 4번문제 질문 - New Companies

0

312

1

as 2 space-separated values. 무슨 말인가요???

0

426

1

Weather observation Station 11 관련 질문

1

368

2

4번문제풀이

0

449

1

섹션3. Weather Observation Station 18 문제 관련

0

367

2

섹션 2에 1,2번 문제풀이 관하여

0

427

1

기한연장문의

0

326

1

Weather observation station 11 문제 not like

-1

358

1

inner join 과 left join

1

591

1

4번 BST 문제 틀리는 이유

0

337

1

4번 문제 질문

0

285

1

620. Not Boring Movies 문제 질문드립니다

0

279

1

binary tree 질문 입니다.

0

292

1

Top Competitors 질문있습니다 ㅠㅠ

0

239

1

set4. 4번

0

314

1