Notice
반응형
Recent Posts
Recent Comments
Link
250x250
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- BREW
- js
- 병행프로세스와 상호배제
- java
- googleCharts
- SQL
- googleChart
- 붙여넣기방지
- TSX
- 응용SW
- Eclipse
- 이미지용량제한
- txs
- IntelliJ
- script
- 이론
- react
- 이클립스
- CSS
- jsp
- SCIPRT
- 책추천
- node
- 정처산기
- Oracle
- createBro
- php version
- input
- npm
- html
Archives
- Today
- Total
개발하자
[ORACLE] 오라클 각 데이터 건수 및 퍼센트 구하기 ( 결과가 0일 경우 0으로 반환) 본문
DATABASES/ORACLE︲TIBERO
[ORACLE] 오라클 각 데이터 건수 및 퍼센트 구하기 ( 결과가 0일 경우 0으로 반환)
개발리미 2023. 11. 29. 17:57728x90
각 데이터 건수 및 퍼센트 구하기
건수, 퍼센트 구하기는 간단하지만 결과 수가 0일 경우 데이터가 안나와서 여러방법을 많이 시도 했다..
해결 방법은 오라클 DUAL 테이블을 사용해서 무조건 표출되게 하는 것이다.
DUAL 테이블은 사용자가 함수(계산)을 실행할 때 임시로 사용하는데 적절!!
SELECT
A.STATUS,
COUNT(B.CATEGORY_CODE) AS CNT,
CASE WHEN SUM(COUNT(B.CATEGORY_CODE)) OVER() = 0 THEN 0
ELSE TO_NUMBER(ROUND((COUNT(B.CATEGORY_CODE) / NULLIF(SUM(COUNT(B.CATEGORY_CODE)) OVER(), 0)) * 100, 1),'999.9')
END AS PERCENTAGE
FROM (
SELECT
CASE ROWNUM
WHEN 1 THEN '접수'
WHEN 2 THEN '처리중'
WHEN 3 THEN '수용불가'
WHEN 4 THEN '중장기검토'
WHEN 5 THEN '완료'
END AS STATUS
FROM DUAL
CONNECT BY LEVEL <= 5
) A
LEFT JOIN (
SELECT
CATEGORY_CODE,
CASE WHEN CATEGORY_CODE = 'IN' THEN '접수'
WHEN CATEGORY_CODE = 'ON' THEN '처리중'
WHEN CATEGORY_CODE = 'NO' THEN '수용불가'
WHEN CATEGORY_CODE = 'LO' THEN '중장기검토'
WHEN CATEGORY_CODE = 'RE' THEN '완료'
ELSE '' END AS STATUS
FROM TABLENAME
) B ON A.STATUS = B.STATUS
GROUP BY A.STATUS
ORDER BY
CASE STATUS
WHEN '접수' THEN 1
WHEN '처리중' THEN 2
WHEN '수용불가' THEN 3
WHEN '중장기검토' THEN 4
ELSE 5 END;
접수, 처리중, 수용불가, 중장기검토, 완료의 각 건수와 퍼센테이지를 표출해야 했다
하지만 완료가 아예 없을 경우 접수, 처리중, 수용불가, 중장기검토만 나오고 완료는 조회가 안되서 한참 고민을 했었다..
이럴때 DUAL을 사용해서 먼저 SELECT 한 다음 -> 실제 테이블과 조인 -> GROUP BY 해주면 끝!
쿼리를 확인해보면 'CONNECT BY LEVEL <= 5' 가 있는데 여기서 5는 표출할 데이터 수다.
나는 접수~완료까지 총 5개 조회를 해야하니 5로 설정했다.
공부하면서 유용했던 부분 메모겸 공유하고자 끄적입니다.
고쳐야하는 부분있다면 댓글 남겨주시면 수정하겠습니다.
행복한 하루 보내세요 (❁´◡`❁)
728x90
반응형
'DATABASES > ORACLE︲TIBERO' 카테고리의 다른 글
[ORACLE] SQL 기초문법 정리 5편(COMMIT, ROLLBACK, SAVEPOINT) (0) | 2023.12.12 |
---|---|
[ORACLE] SQL 기초문법 정리 4편(INSERT, UPDATE, DELETE) (0) | 2023.12.12 |
[ORACLE] SQL 기초문법 정리 3편 (GRANT, REVORK) (2) | 2023.12.11 |
[ORACLE] SQL 기초문법 정리 2편 (CREATE, ALTER, DROP) (0) | 2023.12.11 |
[ORACLE] SQL 기초문법 정리 1편 (SELECT) (0) | 2023.12.11 |