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-查找仅包含某些项目的订单

需要Tricky sql查询,查找子查询的总和

SQL 连接查询以获取借方余额不等于 0 的借方余额的项目名称、日期和总和?

计算每个项目组的月数

sql 测试数据库包含用户,类别,评论,项目,订单,post_category,帖子,个人资料,类型,用户

sql 测试数据库包含用户,类别,评论,项目,订单,post_category,帖子,个人资料,类型,用户