반응형
GROUP BY절
: SELECT문에서 반환된 행을 그룹으로 나눈다. 각 그룹에 대한 합계, 평균, 카운트 등을 계산할 수 있다.
문법
SELECT COLUMN_1, 집계함수(COLUMN_2) --> GROUP BY 컬럼 기재, 집계함수 사용
FROM TABLE_NAME
GROUP BY COLUMN_1; --> GROUP BY절 기재, N개의 컬럼을 GROUP BY하는 경우 ',' 구분해야 하며 GROUP BY절은 FROM 또는 WHERE절 바로 뒤에 나타나야함
예
select CUSTOMER_ID --group by 컬럼인 CUSTOMER_ID를 출력
from payment p --PAYMENT체이블을 조회
group by CUSTOMER_ID; --CUSTOMER_ID기준으로 group BY한다.
--> CUSTOMER ID 기준 중복이 제거된 유일한 값만 보인다는 뜻
합계 구하기+정렬
SELECT CUSTOMER_ID, SUM(AMOUNT) AS AMOUNT_SUM
FROM payment p
GROUP BY customer_id
ORDER BY SUM(AMOUNT) DESC; --거래액이 가장 많은 고객 순으로 출력
카운트 구하기
SELECT STAFF_ID, COUNT(PAYMENT_ID) AS COUNT
FROM payment p
GROUP BY STAFF_ID;
HAVING절
: GROUP BY절과 함께 HAVING절을 사용하여 GROUP BY의 결과를 특정 조건으로 필터링 하는 기능을 한다.
문법
SELECT COLUMN_1, 집계함수(COLUMN_2)
FROM table_NAME
GROUP BY COLUMN_1 -- group by절 기재, N개의 컬럼을 group by하는 경우 콤마로 구분
HAVING 조건식; -- GROUP BY절은 FROM또는 WHERE절 바로 뒤에 나타나야함.
-- HAVING절은 GROUP BY절에 의해 생성된 그룹행의 조건을 설정한다.
-- 반면에 WHERE절은 GROUP BY절이 적용되기 전에 개별 행의 조건을 설정한다.
예
select CUSTOMER_ID, SUM(AMOUNT) as AMOUNT_SUM
from payment p
group by customer_id
having SUM(AMOUNT) > 200; --group by의 결과 값 중에서 SUM(AMOUNT)가 200을 초과하는 값을 출력
반응형
'DataBase' 카테고리의 다른 글
[postgreSQL] INTERSECT, EXCEPT (0) | 2021.09.14 |
---|---|
[postgreSQL][집합연산자] UNION, UNION ALL (0) | 2021.09.14 |
[postgreSQL] NATURAL JOIN (0) | 2021.09.14 |
[postgreSQL] CROSS JOIN (0) | 2021.09.14 |
[postgreSQL] FULL OUTER JOIN (0) | 2021.09.14 |
댓글