sql汇总一列并返回最后一个时间戳

时间:2014-09-09 13:53:34

标签: sql-server sum grouping

我在SQL Server中有一个包含多个列的表。相关的是:

名 距离 CREATE_DATE

我有许多人通过名字确定,每隔几天他们就会走一段距离。例如:

name     distance     create_date
john     15           09/12/2014
john     20           09/22/2014
alex     10           08/15/2014
alex     12           09/05/2014
john     8            09/30/2014
alex     30           09/12/2014

我想要的是一个查询,每个人返回两个日期之间的距离之和,以及该日期范围内最后一个条目的create_date,按最高距离DESC排序。例如,假设日期范围为08/01/2014至09/25/2014,我希望如此:

name     distance     create_date
alex     52           09/12/2014
john     35           09/22/2014

我想过尝试使用带有子查询的SUM查询来获取该范围内的最新日期,但我认为这样做效率不高。

有人对此有所了解吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

SELECT name,
       SUM(distance) AS distance,
       MAX(create_date) AS create_date
FROM   Table
WHERE  create_date >= '20140801' AND create_date < '20140925'
GROUP BY name

<强> SQL Fiddle

答案 1 :(得分:0)

您可以使用简单的sum和max函数。

SELECT name,
       SUM(distance) AS distance,
       MAX(create_date) AS create_date
FROM   theTable
WHERE  create_date >= @startDate AND create_date < @endDate
GROUP BY name
ORDER BY distance DESC