如何使用 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);
我想生成产品 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);