SELECT HOME_DEPT, LINECODE, SUM(TOTAL_HRS),
TO_CHAR (
100*RATIO_TO_REPORT(SUM(TOTAL_HRS))
OVER (PARTITION BY HOME_DEPT),
'990.00L', 'NLS_CURRENCY=%'
) PCT_JOB
FROM TABLE
GROUP BY HOME_DEPT, LINECODE ORDER BY HOME_DEPT ASC, PCT_JOB DESC;
上記のOracleクエリは機能し、次のような結果を生成します。
DEPT1 LINECODE1 100 50%
DEPT1 LINECODE2 50 25%
DEPT1 LINECODE3 50 25%
DEPT2 LINECODE1 20 12.5%
DEPT2 LINECODE2 20 12.5%
DEPT2 LINECODE3 20 12.5%
DEPT2 LINECODE4 20 12.5%
DEPT2 LINECODE5 20 12.5%
DEPT2 LINECODE6 20 12.5%
DEPT2 LINECODE7 20 12.5%
DEPT2 LINECODE8 20 12.5%
今、私はそのような結果を得るために部門ごとにロールアップしたいと思います:
DEPT1 LINECODE1 100 50%
DEPT1 LINECODE2 50 25%
DEPT1 LINECODE3 50 25%
DEPT1 200 100% <--- desired
DEPT2 LINECODE1 20 12.5%
DEPT2 LINECODE2 20 12.5%
DEPT2 LINECODE3 20 12.5%
DEPT2 LINECODE4 20 12.5%
DEPT2 LINECODE5 20 12.5%
DEPT2 LINECODE6 20 12.5%
DEPT2 LINECODE7 20 12.5%
DEPT2 LINECODE8 20 12.5%
DEPT2 160 100.0% <--- desired
GROUPING SETSなどのさまざまなことを試しましたが、PCT_JOBの値が間違っています。