25강 SQL이 뭐지? PostgreSQL HAVING
PostgreSQL
SQL이 뭐지? 25강 시작합니다.
이번 강의에서는
▶ PostgreSQL HAVING clause
에 대해서 알아보겠습니다.
그룹 또는 집계에 대한 검색 조건을 지정하는 PostgreSQL HAVING 절에 대해서 학습합니다.
Introduction to PostgreSQL HAVING clause
HAVING 절은 그룹 또는 집계에 대한 검색 조건을 지정합니다. HAVING 절은 GROUP BY 절과 함께 지정된 조건을 기준으로 그룹 또는 집계를 필터링하는 데 자주 사용됩니다.
다음 문장은 HAVING 절의 기본 구문을 보여줍니다.
SELECT
column1,
aggregate_function (column2)
FROM
table_name
GROUP BY
column1
HAVING
condition;
이 구문에서 절별 그룹화는 열 1로 그룹화된 행을 반환합니다. HAVING 절은 그룹을 필터링할 조건을 지정합니다.
JOIN, LIMIT, FETCH 등 SELECT 문의 다른 절을 추가할 수 있습니다.
PostgreSQL은 FROM, WHERE, GROUP BY, SELECT, DISTINCT, ORDER BY 및 LIMIT 절 뒤에 HAVING 절을 평가합니다.
SQL을 평가하는 순서를 도식화하면 다음과 같습니다.
HAVING 절은 SELECT 절 이전에 평가되므로 HAVING 절에서 열 별칭을 사용할 수 없습니다. HAVING 절을 평가할 때 SELECT 절에 지정된 열 별칭을 사용할 수 없기 때문입니다.
HAVING vs. WHERE
WHERE 절을 사용하면 지정된 조건을 기준으로 행을 필터링할 수 있습니다. 그러나 HAVING 절을 사용하면 지정된 조건에 따라 행 그룹을 필터링할 수 있습니다.
즉, WHERE 절은 행에 적용되고 HAVING 절은 행 그룹에 적용됩니다.
WHERE는 개별 행에 적용되고, HAVING 은 그룹화된 항목에 적용됩니다.
PostgreSQL HAVING clause examples
DVDRENTAL 샘플 데이터베이스에 있는 지불 테이블을 사용합니다.
1) Using PostgreSQL HAVING clause with SUM function example
다음 쿼리는 SUM() 함수와 함께 GROUP BY 절을 사용하여 각 고객의 총금액을 찾습니다.
SELECT
customer_id,
SUM (amount)
FROM
payment
GROUP BY
customer_id;
다음 문구는 200개 이상을 지출한 고객만 선택할 수 있는 HAVING 조항을 추가합니다.
SELECT
customer_id,
SUM (amount)
FROM
payment
GROUP BY
customer_id
HAVING
SUM (amount) > 200;
이와 같이 HAVING 절은 그룹화된 SUM (amount)에 대해서 필터링합니다.
2) PostgreSQL HAVING clause with COUNT example
DVDRENTAL 샘플 데이터베이스에 있는 고객 테이블을 사용합니다.
다음 쿼리는 GROUP BY 절을 사용하여 스토어당 고객 수를 찾습니다.
SELECT
store_id,
COUNT (customer_id)
FROM
customer
GROUP BY
store_id;
다음 문장은 300개 이상의 고객을 보유한 스토어를 선택하기 위한 HAVING 절을 추가합니다.
SELECT
store_id,
COUNT (customer_id)
FROM
customer
GROUP BY
store_id
HAVING
COUNT (customer_id) > 300;
지금까지 HAVING 절에 대해서 공부했습니다.
HAVING 절은 GROUP BY 절이 반환하는 그룹 또는 집계에 대한 검색 조건을 지정합니다.
다음 강의에서 뵙겠습니다.
본 강의는 PostgreSQL Tutorial을 참조합니다.
실습용 테이블에 대해서는 3강을 참조하세요.
Do it! SQL을 찾아 주셔서 감사합니다. 여러분의 댓글이 큰 힘이 됩니다. |
'IT > SQL 기초강좌 (PostgreSQL)' 카테고리의 다른 글
27강 SQL이 뭐지? PostgreSQL CUBE (2) | 2022.12.20 |
---|---|
26강 SQL이 뭐지? PostgreSQL GROUPING SETS (3) | 2022.12.20 |
24강 SQL이 뭐지? PostgreSQL INTERSECT (2) | 2022.12.19 |
23강 SQL이 뭐지? PostgreSQL UNION (1) | 2022.12.19 |
22강 SQL이 뭐지? PostgreSQL GROUP BY (3) | 2022.12.19 |
댓글