sql having 절

또또·2024년 1월 26일

항해99 sql

목록 보기
3/6

having절

  1. having절이란?

해석상 where문과 동일
일반 조건은 where절에 기술하지만 그룹함수 포함 조건은 HAVING절에
그룹의 조건만 having

  1. 특징
  • 그룹을 필터링 하는 2차 필터링
  • group by가 having절보다 앞에 있어야 한다
    select from
    (join on)
    where
    group by
    having
    order by
  • 집계 함수시 조건을 where로 주는것이 아니라 having로 줘야 한다

*집계함수란?
데이터를 그룹화하고 집계된 결과를 계산하는 데 사용

  • COUNT: 특정 컬럼의 행 수를 계산
  • SUM: 특정 숫자형 컬럼의 합을 계산
  • AVG: 특정 숫자형 컬럼의 평균을 계산
  • MIN: 특정 컬럼에서 가장 작은 값
  • MAX: 특정 컬럼에서 가장 큰 값
  • GROUP_CONCAT: 그룹 내에서 특정 문자열 컬럼의 값을 결합

예시
프로그래머스 동명 동물 수 찾기

문제정리

-- 동물 보호소에 들어온 동물 이름 중 두 번 이상 쓰인 이름과 해당 이름이 쓰인 횟수를 조회하는 SQL문을 작성
-- 이때 결과는 이름이 없는 동물은 집계에서 제외하며, 결과는 이름 순으로 조회

====================================================================
1. 일단 SELECT NAME, COUNT(name) AS COUNT
FROM ANIMAL_INS

  1. name이 두번쓰인것-> group by로 묶기
  2. 이 묶인 그룹함수에 대한 조건( COUNT(*) >= 2) 주기-> having
  3. not null주고 이름순으로 order by 주기
-- 동물 보호소에 들어온 동물 이름 중 두 번 이상 쓰인 이름과 해당 이름이 쓰인 횟수를 조회하는 SQL문을 작성
-- 이때 결과는 이름이 없는 동물은 집계에서 제외하며, 결과는 이름 순으로 조회
SELECT NAME, COUNT(name) AS COUNT
FROM ANIMAL_INS 
where name is not null
GROUP BY NAME
HAVING COUNT(*) >= 2
order by NAME
profile
내가 바라던 곳이야 흔들리지 않게 맘을 잡아

0개의 댓글