by 감동맨 [2022.07.14 19:29:03]
SELECT 상품코드, 상품명, 일년, 이년, 삼년, 평균, 비율
FROM (
SELECT 상품코드, 상품명,
SUM(CASE WHEN 날짜 BETWEEN 날짜-12개월 AND 날짜 THEN 사고건수) AS 일년,
........ AS 이년,
........ AS 삼년,
......... AS 평균
FROM 테이블
GROUP BY 상품 WITH ROLLUP) AS A
이런 쿼리 입니다.
ROW가 4개가 나오고 평균컬럼의 ROW를 합해서 각 ROW마다 비율을 구하려고 합니다.
비율 컬럼에 RATIO_TO_REPORT(평균) OVER() 함수를 쓰려고 하는데
SQL ERROR 43601 : SQL0199 KEYWORD OVER NOT EXPECTED. VALID TOKEN:),.
오류가 뜨면서 안됩니다.
비율 컬럼을 제거하고 돌리면 값이 잘 나옵니다.
왜그럴까요,,?
RATIO_TO_REPORT() OVER() 만 안되는 것인지? 분석함수 자체가 안되는 것인지?
1. 분석함수가 지원된다면?
- 평균 / SUM(평균) OVER() 하면 됩니다.
2. 분석함수가 지원되지 않는다면?
- 전체 평균 합계를 따로 구해서 조인하셔야 합니다.
syntax 오류 같아 보이네요.
참고로 db2 버전이 10.1 이상이시면 ratio_to_report 함수 사용은 가능합니다.