【问题标题】:SQL Query - Sum of Order tha Contain an ItemSQL 查询 - 包含项目的订单总和
【发布时间】: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。它是更大系统的一部分。但是,这里不需要正确。添加了我们目前正在运行的内容。

标签: sql select where


【解决方案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
        )
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-08-11
          • 1970-01-01
          • 1970-01-01
          • 2014-06-27
          相关资源
          最近更新 更多