Programmers/Oracle

[ HAVING ] 두 번이상 주문한 사람의 이름과 횟수 알아내기

giggs 2022. 6. 1. 12:20

 

 

QUESTION) 동명 동물 수 찾기 

 

 

 

1. 두 번 이상 쓰인 이름과

2. 해당 이름이 쓰인 횟수

3. 이름이 없는 동물은 집계에서 제외

4. 이름 순으로 조회

 

 

 

 

 

 

## 문제풀이 전 개념 플러스

  • count(컬럼 명)은 null을 무시하고 집계하지만,
  • count(*)는 null까지 포함해서 개수를 집계

 

 

 

 


 

 

 

## 문제해결 1 

  • GROUP BY 조건으로 그룹 나눠준 후
  • HAVING 이용하여 다시 한 번 조건 체크

 

 

 

 

 

 

++ WHERE 절은 생략가능 -

  • WHY?
  • COUNT(칼럼) 해주면 NULL제외하고 집계해주기 때문에

 

 

 

 


 

 

 

## 문제해결 2

  • 서브 쿼리 이용 - 각각의 이름이 몇 번 쓰였는지 뽑아낸 뒤
  • 그 중 2번 이상 사용한 이름과 횟수 뽑아내기.

 

 

 

 


 

 

 

 

## 서브 쿼리문 체크

 

 

 

 

## CHECK

  • GRUOP BY로 그룹을 나눠주기 않으면!
  • 모든 NAME의 COUNT해준값 1개만 출력.

 

 

 

 

 

 


 

 

 

 



REVIEW


이번 문제에서는 HAVING을 이용하여 풀이하는 방법이 
더 효율적으로 생각된다.


이번 문제의 응용 방법으로

두 번 이상 주문한 사람의 이름과 횟수 알아내기로 제목을 정했다.
( 주문 테이블에 있는 주문자 이름 참고하는 )

SELECT 이름, COUNT(이름) AS 주문 횟수
FROM 주문 테이블
GROUP BY 이름
HAVING COUNT(이름) > 1


주문 테이블에서 
주문자 이름 별로 그룹을 지어주고
2번 이상 주문한 사람의 이름과 횟수 뽑아내기!