프로그래밍/DB
[펌]DECODE 이용사례 (4) - BETWEEN OPERATOR
galad
2008. 1. 9. 17:44
PURPOSE
---------
특정 범위를 설정하고 그 범위 사이에 있는 salary를 가진 사람의 count를
구하려면 다음과 같이 한다.
Explanation
-----------
직원의 급여 테이블에서 특정 범위의 급여를 받는 사람이 몇 명인지
나타내주는 SQL을 DECODE, COUNT 함수를 이용하여 구현하기로 한다.
Example
--------
SQL> SELECT count(decode(sign(sal-4999), 1, sal)) "5000 - ",
count(decode(sign(sal-5000), -1,
decode(sign(sal-3999), 1, sal))) "4000-4999",
count(decode(sign(sal-4000), -1,
decode(sign(sal-2999), 1, sal))) "3000-3999",
count(decode(sign(sal-3000),-1,
decode(sign(sal-1999),1,sal))) "2000-2999",
count(decode(sign(sal-2000),-1,
decode(sign(sal- 999),1,sal))) "1000-1999",
count(decode(sign(sal-1000),-1,sal)) "- 1000"
FROM emp;
5000 - 4000-4999 3000-3999 2000-2999 1000-1999 - 1000
-------- --------- --------- --------- --------- --------
1 0 2 3 6 2
---------
특정 범위를 설정하고 그 범위 사이에 있는 salary를 가진 사람의 count를
구하려면 다음과 같이 한다.
Explanation
-----------
직원의 급여 테이블에서 특정 범위의 급여를 받는 사람이 몇 명인지
나타내주는 SQL을 DECODE, COUNT 함수를 이용하여 구현하기로 한다.
Example
--------
SQL> SELECT count(decode(sign(sal-4999), 1, sal)) "5000 - ",
count(decode(sign(sal-5000), -1,
decode(sign(sal-3999), 1, sal))) "4000-4999",
count(decode(sign(sal-4000), -1,
decode(sign(sal-2999), 1, sal))) "3000-3999",
count(decode(sign(sal-3000),-1,
decode(sign(sal-1999),1,sal))) "2000-2999",
count(decode(sign(sal-2000),-1,
decode(sign(sal- 999),1,sal))) "1000-1999",
count(decode(sign(sal-1000),-1,sal)) "- 1000"
FROM emp;
5000 - 4000-4999 3000-3999 2000-2999 1000-1999 - 1000
-------- --------- --------- --------- --------- --------
1 0 2 3 6 2