에러나는 상황
SELECT SUM(DECODE(DEPTNO, 10, COUNT(JOB), 0)) AS "10번부서",
SUM(DECODE(DEPTNO, 20, COUNT(JOB), 0)) AS "20번부서",
SUM(DECODE(DEPTNO, 30, COUNT(JOB), 0)) AS "30번부서"
FROM EMP;
원인
- COUNT 함수는 그룹행 함수다. 여러 행이 한번에 들어가야하는데, DEPTNO가 10인 행의 데이터가 각각 인자로 들어가는 상황이다.
- 여기서 GROUP BY가 필요한 이유는, DEPTNO가 10, 20, 30인 데이터를 각각 하나로 모우는 임시 테이블을 만들기 위해서다(뇌피셜)
- 만들어진 임시 테이블에서는 전체 행이 각각 10, 20, 30일테니까 COUNT 함수를 사용할 수 있는 것 같다.
'데이터베이스 > ORACLE' 카테고리의 다른 글
[ORACLE] Data Dictionary(System catalog) (0) | 2020.05.31 |
---|---|
[ORACLE] SELECT ~ FOR UPDATE 기능 및 용도 (0) | 2020.05.31 |
[ORACLE] 부서별 컬럼을 만들고, 직원 수를 나타내기(GROUP BY or 조건문 활용) (0) | 2020.05.29 |
[ORACLE] 82년도에 입사한 직원 찾기(LIKE 활용) (0) | 2020.05.29 |
[ORACLE] DISTINCT 함수의 알고리즘 차이(9i VS 10g) (0) | 2020.05.29 |