태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.
scott이 가지고 있는 EMP 테이블을 가지고 장난질을 좀 쳐 보기로 합시다.
EMP테이블에는 hiredate라고 입사년도가 있습니다.
그걸 가지고~ 아래와 같은 모양으로 출력되게 해 봅시다~

      TOTAL         1980           1981          1982         1987
---------- ---------- ---------- ---------- ----------
            15              1              10              2              1











잠시 생각하셨나요? ㅎㅎ

굳이 옆으로 출력할 필요가 없다면 간단하게 이런식으로 출력할 수 있습니다.

SQL> select to_char(hiredate,'YYYY'),count(*) from emp
        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;

      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;


역시나 이래저래 공부 열심히 해야 겠습니다 ^^;;
  1. 오라클 2008.03.06 13:30 신고

    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) "1983"
    from emp;

    • 강멍멍이 Keiz 2008.03.06 13:45 신고

      SQL문 감사 합니다 ^-^ 훨씬 좋아진거 같네요.
      살짝 문법 오류가 있어서 수정 후 포스트에 추가 했습니다~

+ Recent posts