SQL 查询 - 包含项目的订单总和
Posted
技术标签:
【中文标题】SQL 查询 - 包含项目的订单总和【英文标题】:SQL Query - Sum of Order tha Contain an Item 【发布时间】:2013-08-09 14:40:47 【问题描述】:我很惊讶我无法找到解决此问题的方法。我们有一张桌子
订单号 |产品编号 |价格 1 | 1 | 1.00 1 | 2 | 2.00 2 | 3 | 3.00 2 | 4 | 4.00 3 | 1 | 5.00 3 | 4 | 6.00我们想要获取包含 productID=1 的所有订单的收入总和。本例中的结果应该是 1+2+5+6 = 14
实现这一目标的最佳方法是什么?
目前,我最好的解决方案是运行两个查询。
1 - SELECT orderID FROM table WHERE prodID=$prodID
2 - SELECT price FROM table WHERE orderID=[result of the above]
这很有效,但强烈希望有一个查询。
【问题讨论】:
为什么需要加入?请尝试添加您测试过的内容。 对不起,加入 bc。它是更大系统的一部分。但是,这里不需要正确。添加了我们目前正在运行的内容。 【参考方案1】:这是一个查询,它提供了您正在寻找的结果:
SELECT OrderNum, SUM(PRICE) as TotalPrice
FROM MyTable AS M
WHERE EXISTS (SELECT 1 -- Include only orders that contain product 1
FROM MyTable AS M2
WHERE M2.OrderNum=M.OrderNum AND M2.ProductId=1)
GROUP BY OrderNum
【讨论】:
【参考方案2】:试试:
select sum(price) as total_price
from orders
where prod_order in
(select prod_order
from orders
where product_id = 1)
检查this SQLFiddle以确认结果。
【讨论】:
谢谢!与其他一些响应类似,但 SQLFiddle 链接要加分。【参考方案3】:select sum(price) as total_price where product_id=[enter here id];
【讨论】:
【参考方案4】:SELECT SUM(t1.price) FROM tableName t1 WHERE
t1.orderId IN (SELECT t2.orderId FROM tableName t2 WHERE
t2.productId=productIdYouWant)
如果您需要有关此工作原理的更多信息,请随时询问。
【讨论】:
【参考方案5】:您需要一个嵌套选择。内部选择应该给你总订单价值;
select order, sum(price) as totalvalue from table group by order
现在你需要选择product id为1的订单,并求和订单价格;
select sum(totalvalue) from (
select order, sum(price) as totalvalue from table group by order
) where order in (
select order from table where productid = 1
)
【讨论】:
以上是关于SQL 查询 - 包含项目的订单总和的主要内容,如果未能解决你的问题,请参考以下文章
SQL 连接查询以获取借方余额不等于 0 的借方余额的项目名称、日期和总和?