일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 파이썬
- sklearn
- ML
- matplotlib
- 데이터 분석
- pytorch
- Google ML Bootcamp
- SQLD
- 이코테
- 통계
- 코딩테스트
- 머신러닝
- scikit learn
- IRIS
- 데이터분석준전문가
- 딥러닝
- SQL
- tableau
- ADsP
- Python
- Deep Learning Specialization
- 태블로
- 데이터분석
- 회귀분석
- 이것이 코딩테스트다
- 자격증
- 데이터 전처리
- pandas
- 시각화
- r
- Today
- Total
함께하는 데이터 분석
[SQL] 복수 행 함수 본문
오늘은 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 |