함께하는 데이터 분석

[SQL] 복수 행 함수 본문

데이터분석 공부/SQL

[SQL] 복수 행 함수

JEONGHEON 2022. 5. 1. 16:29

오늘은 SQL에서 복수 행 함수에 대해 알아보겠습니다.

 

복수 행 함수는 단일 행 함수와 달리

 

여러 행들이 하나의 결과값으로 나타나는 특징이 있습니다.

 

복수 행 함수에는 집계 함수와 그룹 함수가 있습니다.

 

표로 요약하여 보여드리겠습니다.

 

구분 함수 설명
집계 함수 count / count(distinct) 행수 / 중복 제거한 행수
sum 합계
avg 평균
max / min 최대 / 최소
그룹 함수 with rollup 소계와 합계

그럼 이제 SQL workbench를 통해 살펴보겠습니다.

 

 

 

데이터 베이스 사용

/* 데이터베이스 da 사용 */ 
use da;

insurance 데이터를 사용하기 위해

 

데이터 베이스 da를 사용하겠습니다.

 

그럼 이제 insurance 데이터를 조회하겠습니다.

 

 

 

데이터 조회

/* insurance 테이블 모든 열 조회 */
select * from insurance;

이제 익숙한 데이터입니다.

 

오늘은 expenses 즉, 보험 비용 값을 활용하여

 

다양한 집계 함수를 살펴보겠습니다.

 

 

 

집계 함수

/* 집계 함수 */
select count(age) as 총행수
,count(distinct age) as 중복나이제거수
,sum(expenses) as 총보험비용
,avg(expenses) as 평균보험비용
,max(expenses) as 최대보험비용
,min(expenses) as 최소보험비용
from insurance;

select와 마지막 줄의 from insurance로

 

insurance 데이터를 활용한 것을 볼 수 있습니다.

 

count 집계 함수는 앞 포스트에서도 많이 봤었죠.

 

count(age)로 age 열의 총행수가 1338개인 것을 확인할 수 있습니다.

 

그렇지만 age데이터는 동일한 나이의 데이터가 많습니다.

 

만약 동일한 나이의 중복을 제거한 행 수가 알고 싶다면

 

count(distinct age)를 사용하시면 됩니다.

 

중복을 제거하면 47개의 행인 것이 보이네요.

 

나머지 sum, avg(average의 약자), max, min은 순서대로

 

합, 평균, 최댓값, 최솟값입니다.

 

이 값들로 하나의 테이블을 만들었는데 소수점 뒤가 너무 긴 것이 보이죠.

 

이전에 배웠던 단일 행 함수중 round를 이용하여 소수점을 없애보겠습니다.

 

/* 집계 함수 */
select count(age) as 총행수
,count(distinct age) as 중복나이제거수
,round(sum(expenses), 0) as 총보험비용
,round(avg(expenses), 0) as 평균보험비용
,round(max(expenses), 0) as 최대보험비용
,round(min(expenses), 0) as 최소보험비용
from insurance;

단일 행 함수인 round도 같이 활용할 수 있습니다.

 

round(숫자, 0)을 이용하여 소수점 뒤 첫 번째 자리에서 반올림한 결과입니다.

 

확실히 깔끔한 모습입니다.

 

이번에는 그룹 함수에 대해 알아보겠습니다.

 

 

 

그룹 함수

/* 그룹 함수 */
select region, smoker, count(smoker) as 해당수
from insurance 
where smoker in ('yes', 'no')
group by region, smoker
with rollup;

전 포스트에서 group by를 활용한 코드를 그대로 가져왔고

 

거기에 with rollup만 써줬습니다.

 

보면 region 변수에 대해 소계를 구해주는 것이 보입니다.

 

그리고 맨 마지막 줄에 총합계를 추가로 보여줍니다.

 

만약 데이터의 양의 매우 많다면 쉽게 소계와 합계를 구할 수 있겠죠.

 

그럼 다음에 또 만나 뵐게요!

'데이터분석 공부 > SQL' 카테고리의 다른 글

[SQL] 단일 행 함수  (0) 2022.04.30
[SQL] 특수 연산자, 집합 연산자  (0) 2022.04.28
[SQL] 비교 연산자, 논리 연산자  (0) 2022.04.28
[SQL] 테이블 결합 - JOIN  (0) 2022.04.27
[SQL] 데이터 조회 - SELECT  (0) 2022.04.21