SELECT문
2. 컬럼을 ROW화
◈ 조직별로 각사원 급여 지급 순위 메기기 와 전사원에 대한 순위 메기기 SELECT org_id, emp_id, pay_mon, RANK() OVER(PARTITION BY org_id ORDER BY pay_mon DESC) as rank_of_org_id, RANK() OVER(ORDER BY pay_mon DESC) AS rank_of_all FROM py_payroll WHERE pay_ymd = '20040123' ORDER BY org_id, pay_mon desc;
결과]
설명] RANK() OVER(PARTITION BY org_id ORDER BY pay_mon DESC) as rank_of_org_id, ; org_id 로 partition을 나누고, pay_mon 으로 order by를 DESC 순으로 해서 RANK(순위)를 매긴다. RANK() OVER(ORDER BY pay_mon DESC) AS rank_of_all ; 전체를 대상으로 pay_mon 으로 order by 를 DESC 순으로 해서 RANK(순위)를 매긴다. | |
실제값]
원하는 결과]
SQL문] SELECT decode(seq, 1, a1, 2, b1, c1 ), decode(seq, 1, a2, 2, b2, c2 ), decode(seq, 1, a3, 2, b3, c3 ) FROM ( SELECT seq, a1, a2, a3, b1, b2, b3, c1, c2, c3 FROM (SELECT 'A11' a1, 'A12' a2, 'A13' a3, 'B11' b1, 'B12' b2, 'B13' b3, 'C11' c1, 'C12' c2, 'C13' c3 FROM DUAL UNION ALL SELECT 'A21' a1, 'A22' a2, 'A23' a3, 'B21' b1, 'B22' b2, 'B23' b3, 'C21' c1, 'C22' c2, 'C23' c3 FROM DUAL UNION ALL SELECT 'A31' a1, 'A32' a2, 'A33' a3, 'B31' b1, 'B32' b2, 'B33' b3, 'C31' c1, 'C32' c2, 'C33' c3 FROM DUAL), sys_dual WHERE seq <= 3 ) ;
| |
'(DB) Oracle > SQL' 카테고리의 다른 글
Oracle - 예제_SUBQUERY (0) | 2017.01.18 |
---|---|
Oracle - 예제_SELECT_GROUP (0) | 2017.01.18 |
Oracle - 예제_MERGE (0) | 2017.01.18 |
Oracle - 예제_INSERT (0) | 2017.01.18 |
Oracle - 예제_DELETE (0) | 2017.01.18 |