gpt4 book ai didi

sql - 在 select 语句中子查询同一个表

转载 作者:行者123 更新时间:2023-12-04 02:45:45 24 4
gpt4 key购买 nike

我有一家餐厅数据库,我需要计算所有单独销售商品的总值(value)。因此,如果我卖了一个基本价格为 10.00 美元的汉堡包,其中培根的价格为 1.00 美元,而一个汉堡包(同样为 10.00 美元)的鳄梨价格为 0.50 美元,我需要退回 21.50 美元。我的发票表如下所示:

invoice_num item_num  price   item_id   parent_item_id
111 hmbg 10.00 guid_1 ''
111 bacn 1.00 guid_2 guid_2
112 hmbg 10.00 guid_3 ''
112 avcd 0.50 guid_4 guid_3

我可以像这样得到所有父项的总和:

SELECT item_num, SUM(price) FROM invoices WHERE parent_item_id = ''

让我困惑的是添加的配料。我觉得我需要在 SUM 中添加一个子查询,但我不确定如何去做并引用原始查询以使用 item_id。

最佳答案

 SELECT item_num, sum(i.price) + sum(nvl(x.ingred_price,0))
FROM invoices i
LEFT OUTER JOIN
(SELECT parent_item_id
, sum(price) ingred_price
FROM invoices
WHERE parent_item_id IS NOT NULL
GROUP BY parent_item_id) x
ON x.parent_item_id = i.item_id
WHERE i.parent_item_id IS NULL
GROUP BY item_num

这是一个 SQL Fiddle证明上面的代码有效。我使用的是 Oracle,但您应该能够使其适应您使用的任何数据库。

假设:您在父子关系中的级别不超过一级。例如。 A 可以生一个 child B,但 B 不会有任何其他 child 。

关于sql - 在 select 语句中子查询同一个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18878005/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com