💡 Lecture/데이터분석가 회사에서 많이 쓰는 완전 기초 쿼리

[SQL] 데이터분석가 많이 쓰는 완전 기초 쿼리 5탄 : 집계함수 count, min, max, sum, avg, decode, group by, having

미미누 2023. 11. 10. 21:19

https://www.youtube.com/watch?v=BSA0MhvbikA

 

본 글은 [SQL] 데이터분석가 회사에서 많이 쓰는 완전 기초 쿼리, 을 시청하고 정리한 글입니다.


집계 함수 COUNT, MIN, MAX, SUM, AVG 의 예시

SELECT statn_nm
	, count(*) AS 개수
	, MIN(BEGIN_TIME) AS 첫출발시간
	, MAX(BEGIN_TIME) AS 마지막출발시간
	, SUM(NMPR_CNT) AS 총합
	, SUM(NMPR_CNT) / COUNT(*) AS 평균1
	, AVG(NMPR_CNT) AS 평균2
FROM dasql.tb_pbtrnsp
WHERE statn_nm LIKE '%혜화%'
GROUP BY statn_nm;

2개 이상의 컬럼에 대해, COUNT() 함수를 쓸 시에 GROUP BY을 다 써야함.

SELECT STATN_N
	, TKCAR_GFF_SE_CD
	, COUNT(*)
FROM DASQL.TB_PBTRNSP
GROUP BY STATN_NM, TKCAR_GFF_SE_CD
ORDER BY STATN_NM DESC, TKCAR_GFF_SE_CD DESC
SELECT NO_LN
	, SUM(NMPR_CNT)
FROM DASQL.TB_PBTRNSP
GROUP BY NO_LN
ORDER BY NO_LN 

CASE WHEN 구문, DECODE 구문을 이용한 예시

             SELECT NO_LN
	, SUM(CASE WHEN STATN_NM = '헤화' THEN 1 ELSE 0 END) AS 혜화1
	, SUM(DECODE(STATN_NM, '혜화',1,0)) AS 혜화2
	, SUM(DECODE(STATN_NM, NULL, 1 , 0)) AS 널값
	, SUM(CASE WHEN STATN_NM IN ('혜화', '명동') THEN 1 ELSE 0 END) AS 예시1
	, SUM(CASE WHEN STATN_NM IN ('혜화', '명동') THEN NMPR_CNT ELSE 0 END) AS 예시2
	, AVG(CASE WHEN STATN_NM IN ('혜화', '명동') THEN NMPR_CNT ELSE 0 END) AS 예시3
	, SUM(DECODE(STATN_NM,'혜화',1,'명동',1,0)) AS 예시4
	, SUM(DECODE(STATN_NM,'혜화',NMPR_CNT,'명동','NMPR_CNT,0)) AS 예시5
	, AVG(DECODE(STATN_NM, '혜화', NMPR_CNT, '명동', NMPR_CNT,0)) AS 예시5
FROM DASQL.TB_PBTRNSP
WHERE HO_LN = '4호선'
GROUP BY HO_LN
ORDER BY HO_LN

HAVING 절을 이용해 조건에 맞는 총 개수 출력하기

SELECT STATN_NM
 , COUNT(*) AS 총개수
FROM DASQL.TB_PBTRNSP
GROUP BY STATN_NM
HAVING COUNT(*) > 2