개발/데이터베이스

[PostgreSQL] DISTINCT, HAVING

고등어찌짐 2022. 4. 27. 22:15

 

DISTINCT

column1 에 있는 값들을 중복을 모두 제거하고 보여준다. 

SELECT DISTINCT column1 FROM table1;

 

GROUP BY, HAVING

GROUP BY 쿼리를 이용해 데이터를 집계하고, 집계된 이후의 데이터 내에서 조건 검색을 할 경우에 HAVING 을 사용한다. 반면 WHERE 는 데이터가 집계되기 이전의 데이터 내에서 조건을 필터링한다는 차이가 있다. 

( 쿼리 연산은 FROM - WHERE - GROUP BY - HAVING - SELECT - DISTINCT - ORDER BY - LIMIT  순으로 처리된다. )

SELECT author 
FROM book
WHERE author LIKE 'Kim%'
GROUP BY author
HAVING count(*) > 3;

WHERE 절 내에 서브쿼리를 사용한다면, GROUP BY 하지 않고도 데이터 집계함수를 사용할 수 있다. 

SELECT name FROM book
WHERE price <= (
	SELECT avg(price) FROM book
);

 

 

#참조

모두를 위한 PostgreSQL