본문 바로가기

Oracle/12일

12일차 6

집계

scott계정으로 접속
년도별 입사자수 출력


SELECT DISTINCT TO_CHAR(hiredate, 'YYYY') 
FROM emp;
 TO_CHAR(HIREDATE,'YYYY')
 ------------------------
 1980
 1982
 1981
SELECT hiredate,
  TO_CHAR(hiredate, 'YYYY') as "1980",
  TO_CHAR(hiredate, 'YYYY') as "1981",
  TO_CHAR(hiredate, 'YYYY') as "1982"
FROM emp;
HIREDATE              1980 1981 1982
 --------------------- ---- ---- ----
 1980-12-17 00:00:00.0 1980 1980 1980
 1981-02-20 00:00:00.0 1981 1981 1981
 1981-02-22 00:00:00.0 1981 1981 1981
 1981-04-02 00:00:00.0 1981 1981 1981
 1981-09-28 00:00:00.0 1981 1981 1981
 1981-05-01 00:00:00.0 1981 1981 1981
 1981-06-09 00:00:00.0 1981 1981 1981
 1981-11-17 00:00:00.0 1981 1981 1981
 1981-09-08 00:00:00.0 1981 1981 1981
 1981-12-03 00:00:00.0 1981 1981 1981
 1981-12-03 00:00:00.0 1981 1981 1981
 1982-01-23 00:00:00.0 1982 1982 1982
SELECT hiredate,
  DECODE(TO_CHAR(hiredate, 'YYYY'), 1980, 1, 0) as "1980",
  DECODE(TO_CHAR(hiredate, 'YYYY'), 1981, 1, 0) as "1981",
  DECODE(TO_CHAR(hiredate, 'YYYY'), 1982, 1, 0) as "1982"
FROM emp;
 HIREDATE              1980 1981 1982
 --------------------- ---- ---- ----
 1980-12-17 00:00:00.0    1    0    0
 1981-02-20 00:00:00.0    0    1    0
 1981-02-22 00:00:00.0    0    1    0
 1981-04-02 00:00:00.0    0    1    0
 1981-09-28 00:00:00.0    0    1    0
 1981-05-01 00:00:00.0    0    1    0
 1981-06-09 00:00:00.0    0    1    0
 1981-11-17 00:00:00.0    0    1    0
 1981-09-08 00:00:00.0    0    1    0
 1981-12-03 00:00:00.0    0    1    0
 1981-12-03 00:00:00.0    0    1    0
 1982-01-23 00:00:00.0    0    0    1
SELECT 
  SUM(DECODE(TO_CHAR(hiredate, 'YYYY'), 1980, 1, 0)) as "1980",
  SUM(DECODE(TO_CHAR(hiredate, 'YYYY'), 1981, 1, 0)) as "1981",
  SUM(DECODE(TO_CHAR(hiredate, 'YYYY'), 1982, 1, 0)) as "1982"
FROM emp;
 1980 1981 1982
 ---- ---- ----
    1   10    1
SELECT TO_CHAR(hiredate, 'YYYY') AS HIREDATE, COUNT(*)
FROM emp
GROUP BY TO_CHAR(hiredate, 'YYYY')
ORDER BY 1;
 HIREDATE COUNT(*)
 -------- --------
 1980            1
 1981           10
 1982            1


oraclejava 계정에서 년도별 입사자 구해..

SELECT DISTINCT TO_CHAR(hire_date, 'YYYY')
FROM employees
ORDER BY 1;
 TO_CHAR(HIRE_DATE,'YYYY')
 -------------------------
 1987
 1989
 1990
 1991
 1993
 1994
 1995
 1996
 1997
 1998
 1999
 2000
SELECT 
  SUM(DECODE(TO_CHAR(hire_date, 'YYYY'), 1987, 1, 0)) AS "1987",
  SUM(DECODE(TO_CHAR(hire_date, 'YYYY'), 1989, 1, 0)) AS "1989",
  SUM(DECODE(TO_CHAR(hire_date, 'YYYY'), 1990, 1, 0)) AS "1990",
  SUM(DECODE(TO_CHAR(hire_date, 'YYYY'), 1991, 1, 0)) AS "1991",
  SUM(DECODE(TO_CHAR(hire_date, 'YYYY'), 1993, 1, 0)) AS "1993",
  SUM(DECODE(TO_CHAR(hire_date, 'YYYY'), 1994, 1, 0)) AS "1994",
  SUM(DECODE(TO_CHAR(hire_date, 'YYYY'), 1995, 1, 0)) AS "1995",
  SUM(DECODE(TO_CHAR(hire_date, 'YYYY'), 1996, 1, 0)) AS "1996",
  SUM(DECODE(TO_CHAR(hire_date, 'YYYY'), 1997, 1, 0)) AS "1997",
  SUM(DECODE(TO_CHAR(hire_date, 'YYYY'), 1998, 1, 0)) AS "1998",
  SUM(DECODE(TO_CHAR(hire_date, 'YYYY'), 1999, 1, 0)) AS "1999",
  SUM(DECODE(TO_CHAR(hire_date, 'YYYY'), 2000, 1, 0)) AS "2000"
FROM employees;
 1987 1989 1990 1991 1993 1994 1995 1996 1997 1998 1999 2000
 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
    2    1    1    1    1    2    1    2    2    3    3    1


 

 

 

부서별, 업무별 급여통계

scott계정으로 접속

SELECT * FROM dept;
SELECT DISTINCT deptno 
FROM emp;
 DEPTNO
 ------
     30
   NULL
     20
     10
SELECT job,
  DECODE(deptno, 10, sal, 0) AS d10,
  DECODE(deptno, 20, sal, 0) AS d20,
  DECODE(deptno, 30, sal, 0) AS d30
FROM emp;
 JOB       D10  D20  D30
 --------- ---- ---- ----
 CLERK        0  800    0
 SALESMAN     0    0 1600
 SALESMAN     0    0 1250
 MANAGER      0 2975    0
 SALESMAN     0    0 1250
 MANAGER      0    0 2850
 MANAGER   2450    0    0
 PRESIDENT 5000    0    0
 SALESMAN     0    0 1500
 CLERK        0    0  950
 ANALYST      0 3000    0
 CLERK        0    0    0
SELECT job,
  SUM(DECODE(deptno, 10, sal, 0)) AS d10,
  SUM(DECODE(deptno, 20, sal, 0)) AS d20,
  SUM(DECODE(deptno, 30, sal, 0)) AS d30
FROM emp
GROUP BY job;
 JOB       D10  D20  D30
 --------- ---- ---- ----
 CLERK        0  800  950
 SALESMAN     0    0 5600
 PRESIDENT 5000    0    0
 MANAGER   2450 2975 2850
 ANALYST      0 3000    0
SELECT job,
  SUM(DECODE(deptno, NULL, sal, 0)) AS free,
  SUM(DECODE(deptno, 10, sal, 0)) AS d10,
  SUM(DECODE(deptno, 20, sal, 0)) AS d20,
  SUM(DECODE(deptno, 30, sal, 0)) AS d30, 
  SUM(sal) AS total
FROM emp
GROUP BY job;
 JOB       FREE D10  D20  D30  TOTAL
 --------- ---- ---- ---- ---- -----
 CLERK     1300    0  800  950  3050
 SALESMAN     0    0    0 5600  5600
 PRESIDENT    0 5000    0    0  5000
 MANAGER      0 2450 2975 2850  8275
 ANALYST      0    0 3000    0  3000


oraclejava에서도 해보자.

SELECT * FROM departments;
SELECT DISTINCT department_id 
FROM employees
ORDER BY 1;
 DEPARTMENT_ID
 -------------
            10
            20
            50
            60
            80
            90
           110
          NULL
SELECT job_id,
  DECODE(department_id, NULL, salary, 0) AS free,
  DECODE(department_id, 10, salary, 0) AS d10,
  DECODE(department_id, 20, salary, 0) AS d20,
  DECODE(department_id, 50, salary, 0) AS d50,
  DECODE(department_id, 60, salary, 0) AS d60,
  DECODE(department_id, 80, salary, 0) AS d80,
  DECODE(department_id, 90, salary, 0) AS d90,
  DECODE(department_id, 110, salary, 0) AS d110
FROM employees;
 JOB_ID     FREE D10  D20   D50  D60  D80   D90   D110
 ---------- ---- ---- ----- ---- ---- ----- ----- -----
 AD_PRES       0    0     0    0    0     0 24000     0
 AD_VP         0    0     0    0    0     0 17000     0
 AD_VP         0    0     0    0    0     0 17000     0
 IT_PROG       0    0     0    0 9000     0     0     0
 IT_PROG       0    0     0    0 6000     0     0     0
 IT_PROG       0    0     0    0 4200     0     0     0
 ST_MAN        0    0     0 5800    0     0     0     0
 ST_CLERK      0    0     0 3500    0     0     0     0
 ST_CLERK      0    0     0 3100    0     0     0     0
 ST_CLERK      0    0     0 2600    0     0     0     0
 ST_CLERK      0    0     0 2500    0     0     0     0
 SA_MAN        0    0     0    0    0 10500     0     0
 SA_REP        0    0     0    0    0 11000     0     0
 SA_REP        0    0     0    0    0  8600     0     0
 SA_REP     7000    0     0    0    0     0     0     0
 AD_ASST       0 4400     0    0    0     0     0     0
 MK_MAN        0    0 13000    0    0     0     0     0
 MK_REP        0    0  6000    0    0     0     0     0
 AC_MGR        0    0     0    0    0     0     0 12000
 AC_ACCOUNT    0    0     0    0    0     0     0  8300
SELECT job_id, 
        SUM(DECODE(department_id, NULL, salary, 0)) AS free, 
        SUM(DECODE(department_id, 10, salary, 0)) AS d10, 
        SUM(DECODE(department_id, 20, salary, 0)) AS d20, 
        SUM(DECODE(department_id, 50, salary, 0)) AS d50,
        SUM(DECODE(department_id, 60, salary, 0)) AS d60, 
        SUM(DECODE(department_id, 80, salary, 0)) AS d80, 
        SUM(DECODE(department_id, 90, salary, 0)) AS d90, 
        SUM(DECODE(department_id, 110, salary, 0)) AS d110, 
        SUM(salary) AS TOTAL
FROM employees
GROUP BY job_id;
 JOB_ID     FREE D10  D20   D50   D60   D80   D90   D110  TOTAL
 ---------- ---- ---- ----- ----- ----- ----- ----- ----- -----
 IT_PROG       0    0     0     0 19200     0     0     0 19200
 AC_MGR        0    0     0     0     0     0     0 12000 12000
 AC_ACCOUNT    0    0     0     0     0     0     0  8300  8300
 ST_MAN        0    0     0  5800     0     0     0     0  5800
 AD_ASST       0 4400     0     0     0     0     0     0  4400
 AD_VP         0    0     0     0     0     0 34000     0 34000
 SA_MAN        0    0     0     0     0 10500     0     0 10500
 MK_MAN        0    0 13000     0     0     0     0     0 13000
 AD_PRES       0    0     0     0     0     0 24000     0 24000
 SA_REP     7000    0     0     0     0 19600     0     0 26600
 MK_REP        0    0  6000     0     0     0     0     0  6000
 ST_CLERK      0    0     0 11700     0     0     0     0 11700

.
.
.
.

'Oracle > 12일' 카테고리의 다른 글

12일차 1  (0) 2012.09.20
12일차 2  (0) 2012.09.20
12일차 3  (0) 2012.09.20
12일차 4  (0) 2012.09.20
12일차 5  (0) 2012.09.20