이런 🐴 이 있습니다.
“데이터는 거짓말을 하지 않는다.”
이 데이터 속에 숨겨진 의미를 찾고 싶다면
전체를 통계내는 것보다는 그룹으로 묶고 그 특정 그룹에 안에서 통계를 내는 것이 훨 ~ 씬 더 쉽습니다.
특정 그룹을 뽑고 싶다면 WHERE을 쓰면 되지만,
그룹이 뽑을게 많다? 그렇다면 GROUP BY를 쓰면 됩니다.
GROUP BY
SELECT 시군구명 FROM 강원도_관광숙박업_현황
GROUP BY 시군구명;
- select from 뒤에 group by 컬럼명을 붙일 수 있는데,
- 일케하면 그 컬럼에 있는 카테고리끼리 그룹지어 보여줍니다.
ㄹㅇ이네;;;
근데 그룹만 지으면 아무 쓰잘데기 없습니다.
GROUP BY 는 전에 했던 MIN, MAX, COUNT, SUM, AVG 함수와 같이 사용하는 경우가 매우매우매우매우 많습니다.
그래서 각각의 카테고리 마다 MIN, MAX, COUNT, SUM, AVG 값을 출력해볼 수 있습니다.
SELECT 시군구명, COUNT(사업장명), MIN(총층수), MAX(총층수) FROM 강원도_관광숙박업_현황
GROUP BY 시군구명;
오늘의 결론
카테고리마다 통계를 내보고 싶으면 GROUP BY를 갈기면 된다.
.
.
.
엄청짧네요
뭐라도 더 해야할 거 같아요.
그럼
레지고
GROUP BY는 category column에 주로 사용
테이블을 유심히 잘 보면 하… 이 섀키 category column 같은데 하는게 있습니다.
여기서는 시군구명 / 문화체육업종명 / 관광숙박업상세명 정도가 되겠네욤
중복된 데이터들이 많이 보이면 그것도 일종의 카테고리라고 생각할 수 있습니다.
그리고 category column 컬럼들에 주로 GROUP BY를 때려야 의미 있는 결과가 나옵니다.
중복된 데이터들이 많아야 그룹이 있을테니까요!
GROUP BY 한 결과도 필터륑 ㅆㄱㄴ
GROUP BY 한 것도 그룹지어서 너무 행이 많으면 필터링 할 수 있습니다.
뒤에 HAVING 조건문을 쓰시면 됩니다.
요놈은 GROUP BY 뒤에만 붙을 수 있는 특이 케이스입니다.
SELECT 시군구명, COUNT(사업장명) FROM 강원도_관광숙박업_현황
GROUP BY 시군구명
HAVING 시군구명 = '속초시';
having을 쓰면 아까 시군구명이 출력된 것중 속초시 인것만 1개의 행만 출력됩니당.
HAVING vs WHERE
HAVING과 WHERE은 용도가 비슷합니다. 둘다 조건식을 입력하는 문법인데요.
HAVING → GROUP BY 결과를 필터링하고 싶을 때 씁니다.
그래서 GROUP BY 뒤에만 붙습니다.
WHERE → 테이블 전체 데이터 출력시 필터링 하고 싶을 때 씁니다.
그래서 SELECT FROM 뒤에만 붙습니다.
SELECT 고객등급, COUNT(고객명) FROM card
WHERE 연체횟수 = 0
GROUP BY 고객등급
HAVING 고객등급 = 'vip'
Q. 위 쿼리는 뭐를 출력하고 싶은걸까요?
쿼리가 조금만 길어도 되게 복잡해지는데, 이럴때는 위에서 부터 하나하나 읽는 것이 중요합니다.
- select from으로 고객등급과 고객들의 수를 출력하는데
- 연체횟수가 0인 행만 필터링하고
- 그 결과를 고객등급으로 그룹화하고
- 그 결과에서 고객등급이 vip 인 행만 필터링하라는 소리입니다.
연체횟수가 0이고, 고객등급이 vip인 사람들의 수
오늘의 GROUP BY 실습
Q1. card 테이블에서 연체횟수마다 몇명이 있는지 출력해보기
select 연체횟수, count(연체횟수) 몇명이냐면 from card
group by 연체횟수
order BY 연체횟수;
ㄱ
ㅜ
ㄷ
Q2. Q1에서 출력한 결과가 너무 길어서 몇명이냐면 컬럼의 값이 1명인 행은 안보이게 필터링 해봅시다.
select 연체횟수, count(연체횟수) 몇명이냐면 from card
group by 연체횟수
having 몇명이냐면 != 1
order BY 연체횟수;
Q3. 아래 사진처럼 card 테이블에서 회원 등급별로 최대사용금액과 최소사용금액이 몇배나 차이나는지 구해봅시다.
select 고객등급, MAX(사용금액) 최대, MIN(사용금액) 최소, MAX(사용금액)/MIN(사용금액) 몇배 from card
group by 고객등급;
ㄴ ㅏ ㅇ ㅣ ㅅ
ㅡ
'DI(Digital Innovation) > DataBase & SQL 뽀개기' 카테고리의 다른 글
진정한 알파메일은 테이블과 컬럼 생성할 때 쿼리를 쓴다 (0) | 2024.02.21 |
---|---|
SQL (IF/CASE) 장인을 꿈꾼다 (0) | 2024.02.21 |
서브쿼리 뽀개기 (0) | 2024.02.19 |
푸바오가 알려주는 컬럼 출력시 사칙연산 & 문자를 다루는 함수 (0) | 2024.02.19 |
국가 권력급 집계함수로 통계내기 (0) | 2024.02.19 |