我在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查询来获取该范围内的最新日期,但我认为这样做效率不高。
有人对此有所了解吗?
谢谢!
答案 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