如何使用 ROLLUP 和 ORDER BY 生成额外的 TOTAL 行?

How to use ROLLUP and ORDER BY to generate additional TOTAL row?

我想生成产品 table 中所有 product_name(s) 的列表,并使用 ROLLUP 添加价格为 "total" 的额外卷。

"total" 价格的计算方法是从折扣中减去 item_price,然后乘以所购商品的数量。产品 table 和 Order_Items table 都与 product_id 连接在一起,后者出现在 table 中。

我的SQL查询如下:

SELECT product_name, (item_price - discount) * quantity AS "total"
FROM order_items
JOIN products ON products.product_id = order_items.product_id
GROUP BY ROLLUP (product_name, "total amount");

我遇到的问题是 SQL 开发人员告诉我我的 SELECT 列表与 GROUP BY 不一致并且 "total amount" 别名在 GROUP BY 中无效条款。

我的预期输出类似于

product_name        total price
product 1            $ 100.00
product 2            $ 300.00
product 3            $ 500.00
TOTAL                $ 0.00 <- generated using ROLLUP

我只需要帮助我的 GROUP BY 措辞和使用 ROLLUP。

您想在第二个字段上使用 sum,修改第一个字段上的 rollup 和合并(或 NVL)以在汇总行上显示 TOTAL。

试试这个:

select coalesce(product_name, 'TOTAL') Product_name,
    sum((item_price - discount) * quantity) as "total"
from order_items
join products on products.product_id = order_items.product_id
group by ROLLUP(product_name);