我正在使用Oracle和SQL Developer。我已经下载了方案Sales History,需要使用它进行一些查询。我正在使用表PRODUCTS。作为用户,我需要每个PROD_CATEGORY、PROD_SUBCATEGORY、SUPPLIER_ID的PROD_LIST_PRICE的总和,以及每个PROD_CATEGORY的总和。我需要通过GROUPING SETS提供解决方案。我做了类似的事情,但似乎是完全错误的:
WITH ds as(
SELECT prod_category, prod_subcategory, supplier_id, sum(prod_list_price) sum_all,
GROUPING_ID (prod_category, prod_subcategory, supplier_id) group_id
FROM products
GROUP BY
GROUPING SETS (
(prod_category, prod_subcategory, supplier_id), ()
)
)
SELECT decode ( GROUPING (prod_category), 1, 'Total', 0, prod_category) cat,
SUM(prod_list_price) sum_prod
FROM ds
GROUP BY
GROUPING SETS( (prod_category), ())
ORDER BY prod_category;
也许我没有正确理解条件。如何修复此查询或进行修改以完全满足我的需要?
1条答案
按热度按时间7bsow1i61#
它不能以当前形式运行
但是分组集的目的是让您准确地选择要进行的分类汇总级别,因此很少需要一个以上的规范。
如果我没阅读你的要求
下面的代码应该可以做到这一点