티스토리 뷰
sum(합을 구하는 함수), decode(치환하는 함수)를 이용해서 그룹별 단순화해보자.
예를 들어, 학과별 자퇴자 명단을 구해보면
select dept, count(sno)
from student
where code = '자퇴'
group by dept;
결과는
dept | count(sno) |
국문과 | 3 |
영문과 | 2 |
철학과 | 5 |
근데 주야간으로 구분해야 한다.
select dept, div_dn, count(sno)
from student
where code = '자퇴'
group by dept, div_dn; 으로 조회하면 아래와 같이 나오는데
dept | div_dn | count(sno) |
국문과 | 주간 | 2 |
국문과 | 야간 | 1 |
영문과 | 주간 | 0 |
영문과 | 야간 | 2 |
... | ... | ... |
이런 식으로 같은 과에서 주야별로 나눠져서 나온다. 내가 원한건 아래와 같다.
dept | 주간 | 야간 | count(sno) |
국문과 | 2 | 1 | 3 |
영문과 | 0 | 2 | 2 |
이렇게 하려면 sum과 decode를 활용하면 쉽다.
sum(컬럼명)은 group으로 묶은 데이터 값의 합을 구하는 함수,
decode(컬럼명, 'A',1,0)은 컬럼에 A값이면 1로 치환 아니면 0으로 치환하는 함수
두 개의 함수를 활용하면
select dept, sum(decode(div_dn,'1',1,0) 주간), sum(decode(div_dn,'1',0,1) 야간), count(sno)
from student
where code = '자퇴'
group by dept, div_dn;
위에 표처럼 출력이 되는데
주야간을 구분하는 div_dn 칼럼은 주간이면 1, 야간이면 2로 입력이 되어 있다.
그래서 decode(div_dn,'1',1,0)을 하면 주간일 경우 1로 치환하고,
decode(div_dn,'1',0,1)을 하면 야간일 경우 1로 치환하고
sum(decode(div_dn,'1',1,0)을 하면 치환한 1값들을 모두 더해져서
주야간별로 깔끔하게 구할 수 있는 것이다.
'IT의 유익 > DB' 카테고리의 다른 글
이름을 부분 머스킹하는 방법(1) (0) | 2017.09.08 |
---|---|
JOIN의 종류와 활용방법 (0) | 2017.03.15 |
Table을 생성했는데 만든 Table이 안보일때(DB Table 권한주기) (0) | 2017.01.10 |
현재 날짜 조건으로 조회하기 (0) | 2016.12.22 |
A,B 두 테이블을 조인했을 때 특정 조건에 대응하는 B 값이 없을 때 표시하는 방법 (0) | 2016.11.02 |
- Total
- Today
- Yesterday
- i7-1260P
- 갖고싶다 고양이
- 반려곤충
- GCP #GCP GIFT#
- 서브 40
- 도로이
- 오렌지가재
- 일취월장
- 다이어트
- 캐시워크
- 베스킨라빈스 포켓몬
- 여름 자전거 대회
- decode
- 혁신도시 국수
- 경산 국수
- 가재 탈피
- 대구 야간 라이딩
- OKOK앱
- 제주 마음 샌드
- 애디그램
- chatgpt 정의
- 타임캐시
- 대구 고양이 카페
- 가재
- 장수풍뎅이
- 칠곡 자전거 대회
- 대구국제마라톤
- ChatGPT
- 애드센스
- 고양이
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |