如何计算指定商品数量的订单金额?需将结果列命名为order_price
解决方案
要计算指定购买数量的订单总成本,你需要在求和时为每个商品匹配对应的购买数量并相乘,以下是两种可行的SQL写法:
方法一:使用CASE语句指定数量
这种方式适合商品数量较少的场景,直接在SUM函数内通过CASE判断商品名称并乘以对应购买量:
SELECT SUM( CASE name WHEN 'snacks' THEN price * 3 WHEN 'chips' THEN price * 2 WHEN 'energy drink' THEN price * 1 ELSE 0 END ) AS order_price FROM products WHERE name IN ('snacks', 'chips', 'energy drink');
WHERE子句用于过滤出订单涉及的商品,避免计算无关数据,确保结果准确。
方法二:关联订单数量表(更易维护)
如果后续需要频繁调整订单商品或数量,推荐用JOIN关联一个包含商品名称和对应数量的临时数据集,逻辑更清晰:
SELECT SUM(p.price * o.quantity) AS order_price FROM products p JOIN ( VALUES ('snacks', 3), ('chips', 2), ('energy drink', 1) ) o(name, quantity) ON p.name = o.name;
这种写法把订单的商品清单和数量单独放在子查询中,修改时只需调整子查询内的内容,无需改动主查询逻辑。
内容的提问来源于stack exchange,提问作者George Tavgazov
相关产品推荐
相关产品推荐

