MIIN, MAX, AVG, SUM 집계함수로 통계내기
데이터 분야에는 총 세가지 분야가 있는데, Data Science / Data Analysis / Data Engineer 가 있습니다.
요즘은 데이터가 안들어가는 곳이 없기 때문에 꼬꼬꼬꼬꼬꼬꼮 SQL 역량은 필수 입니다.
소위말해 국가 권력급 SQL이라고 할 수 있죠.
이 중에서 Data Analysis를 잘하려면 어떻게 해야할까요?
데이터의 숨은 의미를 잘 찾아야합니다.
숨어있는 의미와 이것저것 의미를 이끌어낸다면 잘하는 것입니다.
가장 쉽게 의미를 찾는 방법은 통계를 내는 것입니다.
SQL로 집계함수를 내는 방법은 거의 엑셀과 유사한데요.
최댓값(MAX)
SELECT MAX(컬럼) FROM 테이블명
최솟값(MIN)
SELECT MIN(컬럼) FROM 테이블명
평균(AVG)
SELECT AVG(컬럼) FROM 테이블명
합을구하려면(SUM)
SELECT SUM(컬럼) FROM 테이블명
행의 갯수를 세고 싶으면(COUNT)
SELECT COUNT(*/컬럼명) FROM 테이블
암튼 결론은 집계함수는 이게 끝입니다. 쏘이지 ㅋ
컬럼명 바꾸고 싶으면 AS
SELECT MAX(사용금액) FROM 테이블
원래 이렇게 쿼리를 짠다면 컬럼명이 ‘MAX(사용금액)’이라고 뜹니다.
그러나!(피식대학 정재형 톤으로)
SELECT MAX(사용금액) AS 최대사용금액 FROM 테이블
요로콤 바꿔준다면 컬럼명이 ‘최대사용금액’으로 바뀌는 것을 알 수 있습니다.
응용 1 (필터링 이후에 집계함수도 맥일 수 있음)
고객 등급이 vip인 사람들만 통계를 내고 싶습니다.
그러면 고객등급이 vip를 필터링하고 통계를 내면 됩니다.
“고객등급이 vip인 사람의 평균 사용금액”은?
SELECT AVG(사용금액) AS 평균사용금액 FROM 테이블
WHERE 고객등급 = 'vip'
쏘 이지 합니다.
그래서 “필터링한 결과에서 통계를 낼 수 있다.” 이거 중요합니다.
나중에 진짜 회사에서 쓰는 데이터를 만나보면
전체 데이터를 갖고 노는 것보다,
특정그룹의 데이터를 추출하고 통계를 내는게 대부분 의미찾기가 쉽습니다.
응용 2(참고로 DISTINCT도 사용 가능)
컬럼을 출력할때 각 행에 있는 값들 중에 유니크한 값만 골라서 필터링해주는 ‘DISTINCT’라는 키워드가 있습니다.
쉽게 말해 그냥 중복은 삭제해줘 라는 뜻입니다.
SELECT DISTINCT 연체횟수 FROM card
이것은 연체횟수 중에 중목된 값은 전부 제거하고 출력해줍니다.
SELECT AVG(DISTINCT 연체횟수) FROM card
그리고 DISTINCT로 출력한 결과를 MIN, MAX, AVG, SUM, COUNT로 통계를 낼 수 있습니다.
참고🧤 MAX, MIN 대신 LIMIT 쓰는 경우도 있음
요즘은 거의다 빅데이터 시대이지 않습니까?
그래서 MAX()/MIN()이런게 오래 걸릴 수도 있습니다.
그러면 1. DESC/ASC 순으로 정렬해서, 2. 맨 위의 자료 하나만 뽑으면 됩니다. ← 이렇게 해도 MAX/MIN 이랑 똑같음
SELECT MAX(사용금액) FROM card;
SELECT * FROM card ORDER BY 사용금액 DESC LIMIT 1;
일케하면 똑같다 이말이야~
바꿔서 최솟값을 구하려면?
SELECT MIN(사용금액) FROM card;
SELECT * FROM card ORDER BY 사용금액 LIMIT 1;
ㄱ
ㅜ
ㄷ
실습
1. 최대 결제 횟수와 최소 결제 횟수 출력
SELECT MAX(결제횟수), MIN(결제횟수) FROM card
2. 고객등급이 vip인 사람들의 ‘평균결제횟수’와 ‘사용금액총합계’ 출력
SELECT AVG(결제횟수) 평균결제횟수, SUM(사용금액) 사용금액총합계 FROM card
FROM card
WHERE 고객등급 = 'vip'
3. 연체횟수가 1회 이하인 사람은 몇명?
SELECT COUNT(연체횟수)
FROM card
WHERE 연체횟수 <= 1
'DI(Digital Innovation) > DataBase & SQL 뽀개기' 카테고리의 다른 글
서브쿼리 뽀개기 (0) | 2024.02.19 |
---|---|
푸바오가 알려주는 컬럼 출력시 사칙연산 & 문자를 다루는 함수 (0) | 2024.02.19 |
WHERE 완벽정리 (0) | 2024.02.19 |
데이터 출력하고 정렬 & 필터륑 (1) | 2024.02.07 |
DB 시작 (0) | 2024.02.07 |