【问题标题】:Querying table with group by and sum使用 group by 和 sum 查询表
【发布时间】:2023-03-21 22:12:01
【问题描述】:

我有一个名为 Orders 的表格

  Order  | Date      |    Total
------------------------------------
 34564   | 03/05/2015|  15.00
 77456   | 01/01/2001|   3.00
 25252   | 02/02/2008|   4.00
 34564   | 03/04/2015|   7.00 

我正在尝试选择不同的订单总和并按订单 # 分组,问题是它显示了 34564 的两条记录,因为它们是不同的日期。如果它们是重复的订单,我该如何求和并且只选择max(date) - 但仍然是两个实例的总和?

IE 结果

  Order  | Date      |    Total
------------------------------------
 34564   | 03/05/2015|  22.00
 77456   | 01/01/2001|   3.00
 25252   | 02/02/2008|   4.00

试过了:

SELECT DISTINCT Order, Date, SUM(Total)
FROM Orders
GROUP BY Order, Date

当然,如您所见,上述方法不起作用,但我不确定如何实现我的意图。

【问题讨论】:

  • 我给了所有人一个 +1,但接受了先回答的人。这很容易大声笑...谢谢:)

标签: sql sql-server tsql


【解决方案1】:
SELECT [order], MAX(date) AS date, SUM(total) AS total 
FROM Orders o
GROUP BY [order]

【讨论】:

    【解决方案2】:

    您可以同时使用SUMMAX

    SELECT
        [Order],
        [Date] = MAX([Date]),
        Total = SUM(Total)
    FROM tbl
    GROUP BY [Order]
    

    忠告,请不要在列名和表名中使用OrderDate 等保留字。

    【讨论】:

      【解决方案3】:

      您可以使用MAX 聚合函数从每个Order 组中选择最新的Date

      SELECT Order, MAX(Date) AS Date, SUM(Total) AS Total
      FROM Orders
      GROUP BY Order
      

      【讨论】:

        【解决方案4】:

        最简单的查询应该是:

        SELECT MAX(Order), MAX(Date), SUM(Total)
        FROM Orders
        

        【讨论】:

          【解决方案5】:

          只需将 MAX(Date) 添加到您的 SELECT 子句中。 试试这个:

          SELECT DISTINCT Order, MAX(Date), SUM(Total)
          FROM Orders
          GROUP BY Order, Date
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-07-25
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多