본문 바로가기
IT/SQL 기초강좌 (PostgreSQL)

22강 SQL이 뭐지? PostgreSQL GROUP BY

by DoitSQL 2022. 12. 19.
728x90

22강 SQL이 뭐지? PostgreSQL GROUP BY   

PostgreSQL

SQL이 뭐지? 22강 시작합니다.

 

이번 강의에서는

 PostgreSQL GROUP BY clause

에 대해서 알아보겠습니다.


Introduction to PostgreSQL GROUP BY clause   

GROUP BY 절은 SELECT 문에서 반환되는 행을 그룹으로 나눕니다. 각 그룹에 대해 SUM()과 같은 집계 함수를 적용하여 항목의 합계를 계산하거나 COUNT()를 적용하여 그룹의 항목 수를 가져올 수 있습니다.

 

다음 문은 GROUP BY 절의 기본 구문을 보여줍니다.   

SELECT 
   column_1, 
   column_2,
   ...,
   aggregate_function(column_3)
FROM 
   table_name
GROUP BY 
   column_1,
   column_2,
   ...;  

다음 구문에서:

● 먼저 그룹화할 열(예: 열 1 및 열 2)과 집계 함수를 적용할 열(열 3)을 선택합니다.
 둘째, 그룹화할 열을 GROUP BY 절에 나열합니다.

 

SELECT문은 행을 GROUP BY 절에 지정된 열의 값으로 나누고 각 그룹에 대한 값을 계산합니다.

GROUP BY 절과 함께 SELECT 문의 다른 절을 사용할 수 있습니다.

PostgreSQL은 FROM 절과 WHERE 절 뒤에 그리고 SELECT, DISTINCT, ORDER BY, LIMIT 절 앞에 GROUP BY 절을 평가합니다.

영문 evaluates로 표현되는 '평가하다'가 이해가 잘 안될 수도 있습니다.
DBMS가 SQL을 해석하는 순서로 이햐하시면 될 것 같습니다.

DBMS가 쿼리를 평가하는 순서 도식화


PostgreSQL GROUP BY clause examples   

DVDRENTAL 샘플 데이터베이스에 있는 payment 테이블을 살펴봅시다.

 

1) Using PostgreSQL GROUP BY without an aggregate function example   

GROUP BY 절은 집계 함수를 적용하지 않고 사용할 수 있습니다. 다음 쿼리는  payment 테이블에서 데이터를 가져와 고객 ID별로 결과를 그룹화합니다.

SELECT
   customer_id
FROM
   payment
GROUP BY
   customer_id;
   

이 경우 GROUP BY는 결과 집합에서 중복 행을 제거하는 DISTINCT 절처럼 작동합니다.

 

2) Using PostgreSQL GROUP BY with SUM() function example   

GROUP BY 절은 집합 함수와 함께 사용될 때 유용합니다.

예를 들어, 각 고객이 지불한 총금액을 선택하려면 GROUP BY 절을 사용하여 지불 테이블의 행을 고객 ID별로 그룹화된 그룹으로 나눕니다. 각 그룹에 대해 SUM() 함수를 사용하여 총금액을 계산합니다.

다음 쿼리는 GROUP BY 절을 사용하여 각 고객이 지불한 총 금액을 가져옵니다.

SELECT
customer_id,
SUM (amount)
FROM
payment
GROUP BY
customer_id;   

GROUP BY 절은 결과 집합을 고객 ID별로 정렬하고 동일한 고객에 속하는 양을 합산합니다. customer_id가 변경될 때마다 반환된 결과 집합에 행이 추가됩니다.

다음 문에서는 ORDER BY 절과 GROUP BY 절을 사용하여 그룹을 정렬합니다.

SELECT
customer_id,
SUM (amount)
FROM
payment
GROUP BY
customer_id
ORDER BY
SUM (amount) DESC;   

 

3) Using PostgreSQL GROUP BY clause with the JOIN clause   

다음 구문은 GROUP BY 절과 INNER JOIN 절을 사용하여 각 고객이 지불한 총금액을 얻습니다.

이전 예제와 달리 이 쿼리는 결제 테이블을 고객 테이블과 결합하고 고객을 이름으로 그룹화합니다.

SELECT
first_name || ' ' || last_name full_name,
SUM (amount) amount
FROM
payment
INNER JOIN customer USING (customer_id)    
GROUP BY
full_name
ORDER BY amount DESC;    

 

4) Using PostgreSQL GROUP BY with COUNT() function example   

각 직원이 처리한 결제 트랜잭션 수를 찾으려면 결제 테이블의 행을 staff_id 열의 값으로 그룹화하고 COUNT() 함수를 사용하여 트랜잭션 수를 가져옵니다.

SELECT
staff_id,
COUNT (payment_id)
FROM
payment
GROUP BY
staff_id;   

GROUP BY 절은 결제의 행을 그룹으로 나누고 staff_id 열의 값을 기준으로 그룹화합니다. 각 그룹에 대해 COUNT() 함수를 사용하여 행 수를 반환합니다.

 

5) Using PostgreSQL GROUP BY with multiple columns   

다음 예제에서는 GROUP BY 절에 여러 열을 사용합니다.

SELECT 
  customer_id, 
  staff_id, 
  SUM(amount) 
FROM 
  payment
GROUP BY 
  staff_id, 
  customer_id
ORDER BY 
    customer_id;   

이 예에서 GROUP BY 절은 지불 테이블의 행을 customer_id 및 staff_id 열의 단위로 나눕니다.

(customer_id, staff_id)의 각 그룹에 대해 SUM()은 총 금액을 계산합니다.

 

6) Using PostgreSQL GROUP BY clause with date column   

payment_date는 타임스탬프 열입니다. 날짜별로 결제를 그룹화하려면 DATE() 기능을 사용하여 타임스탬프를 먼저 날짜로 변환한 다음 결과 날짜별로 결제를 그룹화합니다.

SELECT 
   DATE(payment_date) paid_date, 
   SUM(amount) sum
FROM 
   payment
GROUP BY
   DATE(payment_date);   


이번 강의에서는 PostgreSQL GROUP BY 절을 사용하여  행을 그룹으로 나누고 각 그룹에 집계 함수를 적용하는 방법을 배웠습니다.

 

수고하셨습니다.

다음 강의에서 뵙겠습니다.


  본 강의는 PostgreSQL Tutorial을 참조합니다. 

 

PostgreSQL Tutorial - Learn PostgreSQL from Scratch

Welcome to the PostgreSQLTutorial.com website! This PostgreSQL tutorial helps you understand PostgreSQL quickly. You’ll master PostgreSQL very fast through many practical examples and apply the knowledge in developing applications using PostgreSQL. If yo

www.postgresqltutorial.com

실습용 테이블에 대해서는 3강을 참조하세요.

 

3강 SQL이 뭐지? 도구들을 설치해보자. ( PostgreSQL, HeidiSQL )

지난 시간까지 SQL이 뭔지 대충 감을 잡는 시간을 가졌습니다. 이번 시간에는 본격적인 SQL을 공부하기 위해서 도구들을 설치해 보겠습니다. 1. PostgreSQL 설치 ( Windows10 64bit 기준) 2. He


Do it! SQL을 찾아 주셔서 감사합니다. 여러분의 댓글이 큰 힘이 됩니다.

 

728x90

댓글