반응형
scott이 가지고 있는 EMP 테이블을 가지고 장난질을 좀 쳐 보기로 합시다.
EMP테이블에는 hiredate라고 입사년도가 있습니다.
그걸 가지고~ 아래와 같은 모양으로 출력되게 해 봅시다~
역시나 이래저래 공부 열심히 해야 겠습니다 ^^;;
EMP테이블에는 hiredate라고 입사년도가 있습니다.
그걸 가지고~ 아래와 같은 모양으로 출력되게 해 봅시다~
TOTAL 1980 1981 1982 1987
---------- ---------- ---------- ---------- ----------
15 1 10 2 1
---------- ---------- ---------- ---------- ----------
15 1 10 2 1
잠시 생각하셨나요? ㅎㅎ
굳이 옆으로 출력할 필요가 없다면 간단하게 이런식으로 출력할 수 있습니다.
SQL> select to_char(hiredate,'YYYY'),count(*) from emp
group by to_char(hiredate,'YYYY');
group by to_char(hiredate,'YYYY');
TO_C COUNT(*)
---- ----------
1980 1
1981 10
1982 2
1983 1
그럼 잠시 또 생각을 해 보시고... ㅎㅎ
다른 방법도 많이 있겠지만 케이씨는 이렇게 해 봤습니다.
SQL> select (select count(*) from emp) "TOTAL",
2 (select count(*) from emp where to_char(hiredate,'YYYY')='1980') "1980",
3 (select count(*) from emp where to_char(hiredate,'YYYY')='1981') "1981",
4 (select count(*) from emp where to_char(hiredate,'YYYY')='1982') "1982",
5 (select count(*) from emp where to_char(hiredate,'YYYY')='1987') "1987"
6 from dual;
2 (select count(*) from emp where to_char(hiredate,'YYYY')='1980') "1980",
3 (select count(*) from emp where to_char(hiredate,'YYYY')='1981') "1981",
4 (select count(*) from emp where to_char(hiredate,'YYYY')='1982') "1982",
5 (select count(*) from emp where to_char(hiredate,'YYYY')='1987') "1987"
6 from dual;
TOTAL 1980 1981 1982 1987
---------- ---------- ---------- ---------- ----------
15 1 10 2 1
이거이거.. 쌩 노가다 같다는 느낌이... ㅡㅡ;;;
좀 쉬운 방법은 없을까요??
--------------------------------------------------------------------------------------------------
댓글 달아 주신 오라클님 감사합니다 ^-^
작성해 주신 SQL을 오라클에 돌려보니 살짝 오류가 생겨서리 정상적으로 돌아 가도록 쬐금 고쳤습니다.
괄호치고 0하나 더 찍어 준거 밖에는.. ㅎㅎ;;
아무튼.. 이런 방법이 있다구 하네요. 훨씬 간결하고 보기 좋은 걸요 ^0^
select count(*) total
, count(decode(to_char(hiredate,'yyyy'),'1980',0)) "1980"
, count(decode(to_char(hiredate,'yyyy'),'1981',0)) "1981"
, count(decode(to_char(hiredate, 'yyyy'),'1982',0)) "1982"
, count(decode(to_char(hiredate, 'yyyy'),'1983',0)) "1983"
from emp;
, count(decode(to_char(hiredate,'yyyy'),'1980',0)) "1980"
, count(decode(to_char(hiredate,'yyyy'),'1981',0)) "1981"
, count(decode(to_char(hiredate, 'yyyy'),'1982',0)) "1982"
, count(decode(to_char(hiredate, 'yyyy'),'1983',0)) "1983"
from emp;
역시나 이래저래 공부 열심히 해야 겠습니다 ^^;;
반응형
댓글