일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- sql
- EAS
- react
- 시놀로지
- 로또
- 시큐리티
- springboot
- yml
- sqlite
- 스프링
- 이클립스
- DB
- Android
- sts
- string
- 자바스크립트
- 배포
- Native
- mysql
- 앱
- Java
- 안드로이드
- Navigation
- Admob
- expo
- sdk
- YAML
- thymeleaf
- spring
- 폰트
- Today
- Total
Dev JS Blog
[MySQL] with rollup 기능 본문
[MySQL] with rollup 기능
with rollup 기능에 대해서 알아보겠습니다.
rollup은 통계데이터 쿼리를 만들때 이용을 하면 좋은 기능입니다.
어떻게 활용하는지는 먼저 보시죠~
일단 테이블을 새로 만들기는 그렇고 데이터 하나를 임시로 만들겠습니다.
다른분들은 기존 테이블이 있으실테니 저를 따라 안하셔도 됩니다.
일단 쿼리를 이렇게 짜보겠습니다.
CODE 란 데이터가 A 3개, B 1개 인 테이블이 있다고 합시다~
SELECT
code
FROM(
SELECT 'A' as code FROM dual
union all
SELECT 'A' as code FROM dual
union all
SELECT 'A' as code FROM dual
union all
SELECT 'B' as code FROM dual)x
결과 >
code |
A |
A |
A |
B |
여기서 각각 데이터의 개수를 알아보기 위해서 sum과 group by를 이용하겠습니다.
SELECT
code, sum(1) cnt
FROM(
SELECT 'A' as code FROM dual
union all
SELECT 'A' as code FROM dual
union all
SELECT 'A' as code FROM dual
union all
SELECT 'B' as code FROM dual)x
group by code
결과>
code |
cnt |
A |
3 |
B |
1 |
A 3개 ,B 1개라는 결과가 나옵니다. 그럼 이제 rollup을 써보겠습니다.
SELECT
code, sum(1) cnt
FROM(
SELECT 'A' as code FROM dual
union all
SELECT 'A' as code FROM dual
union all
SELECT 'A' as code FROM dual
union all
SELECT 'B' as code FROM dual)x
group by code with rollup
결과>
code |
cnt |
A |
3 |
B |
1 |
(null) |
4 |
어떤 결과가 나왔는지 이해가 가시나요..?
rollup을 code로 했을떄 마지막 행에 code 에 대한 전체 합계가 나옵니다.
그래서 이걸 조금 활용을 하자면
SELECT
case when ifnull(code,'') = '' then '합계' else code end as code,
sum(1) cnt
FROM(
SELECT 'A' as code FROM dual
union all
SELECT 'A' as code FROM dual
union all
SELECT 'A' as code FROM dual
union all
SELECT 'B' as code FROM dual)x
group by code with rollup
결과>
code |
cnt |
A |
3 |
B |
1 |
합계 |
4 |
마지막 code가 null로 나오니 그걸 이용해서 그부분을 합계로
나오도록 case when 을 활용해주었습니다.
이런식으로 rollup 을 써주신다면 통계 쿼리를 짤때
합계를 잘 구할수 있겠죠??
쿼리 공부를 한다면 통계 쿼리는 언제나 해야하는 것이니~
열심히 공부합시다.
'옛날 창고 > SQL' 카테고리의 다른 글
[SQL] JOIN 에 대해서 (0) | 2018.12.23 |
---|---|
[Oracle] row_number() over() 활용 (0) | 2018.12.21 |
[Oracle] order by 기초 (0) | 2018.12.20 |
[MySql] 두 날짜 일 수 차이 구하기 (0) | 2018.05.14 |
[MySQL] 날짜 더하기 빼기 date_add (0) | 2018.04.05 |