[SQL] 카테고리별 연산 - GROUP BY
2024. 8. 14. 17:17ㆍLanguage/SQL
지금까지 학습한 내용으로 음식점의 음식 종류(한식, 일식 등) 별로 음식 가격의 평균을 구하면 어떨까?
SELECT cuisine_type, AVG(price)
FROM food_orders
WHERE cuisine_type = 'Korean'
이런식의 쿼리를 'cuisine_type' 값의 가짓수 만큼 반복해야 할 것 이다. 이는 너무 비효율적인 작업이 될 것 이다. 개발자는 어떻게든 최소한의 쿼리로 원하는 결과를 얻기 위해 노력해야 하므로 우리는 'GROUP BY' 를 알아야 한다.
1. 기본 문법
SELECT 카테고리화 할 컬럼명, 집계함수(계산 대상 컬럼명)
FROM 테이블명
GROUP BY 카테고리화 할 컬럼명
위에서 든 예시처럼 음식 종류마다 가격 평균을 구한다고 하면, '카테고리화 할 컬럼명' 에는 '음식' 에 해당하는 컬럼이 지정될 것이고, '계산 대상 컬럼명' 에는 '가격' 에 해당하는 컬럼이 지정될 것이다.
2. 사용 예시
'customers' 테이블에서 고객의 각 성별마다 평균 나이가 어떻게 되는지 확인해 보자.
SELECT gender, AVG(age) avg_age
FROM customers
GROUP BY gender
카테고리화 할 컬럼은 'gender' 로 'male, femal' 항목을 가질 것이다. 'age' 는 'AVG' 를 통해 평균을 계산할 텐데 'GROUP BY' 에 의해 카테고리 항목마다 연산이 될 것이다. 결과 이미지를 보면 카테고리 항목마다 평균 값(평균 나이)을 계산한 결과가 출력된 것을 볼 수 있다.
'Language > SQL' 카테고리의 다른 글
[SQL] 카테고리별 필터링 - HAVING (0) | 2024.08.14 |
---|---|
[SQL] 데이터 정렬 - ORDER BY (0) | 2024.08.14 |
[SQL] 데이터 계산 - SUM, AVG, COUNT, MIN, MAX (0) | 2024.08.14 |
[SQL] 데이터 필터링 - WHERE (0) | 2024.08.13 |
[SQL] 데이터 조회 - SELECT, FROM (0) | 2024.08.13 |