2014-09-09 2 views
0

У меня есть таблица на SQL Server с несколькими столбцами. Соответствующие из них является:sql суммировать столбец, а также вернуть последний штамп времени

Названия расстояния 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 запроса с подзапросом, чтобы получить самые новые дата в диапазоне, но я думаю, что это неэффективно.

У кого-то есть идея?

Спасибо!

ответ

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

+0

oh wow это простой! Благодаря! – nextguy

0

Вы можете использовать простую сумму и максимальные функции для этого.

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 
Смежные вопросы