2014-11-26 3 views
1

Из базы данных MySQL, я хочу, чтобы получить все последние строки каждого часа в день, таблица выглядит так,Как выбрать последнюю строку каждого часа в день?

Id Name Vcum Date Time ------------------------------------------
1 A 5.5 2014-11-20 09:00
2 B 4.3 2014-11-20 09:05
3 A 6.7 2014-11-20 09:10
4 C 5.9 2014-11-20 09:10
5 A 7.2 2014-11-20 09:20
6 C 6.5 2014-11-20 09:25
7 B 8.1 2014-11-20 09:30
8 C 9.4 2014-11-20 09:35
9 A 6.5 2014-11-20 10:05
10 A 8.1 2014-11-20 10:28
11 C 9.5 2014-11-20 10:32
12 B 9.7 2014-11-20 10:36
13 A 8.8 2014-11-20 10:39
14 C 9.8 2014-11-20 10:42
15 B 9.9 2014-11-20 10:42
Возможно ли это, чтобы получить следующий результат с помощью SQL? Id Name Vcum Date Time
------------------------------------------
5 A 7.2 2014-11-20 09:20 <-- Last row of HOUR(Time) = 9 for Name = A
7 B 8.1 2014-11-20 09:30 <-- Last row of HOUR(Time) = 9 for Name = B
8 C 9.4 2014-11-20 09:35 <-- Last row of HOUR(Time) = 9 for Name = C
13 A 8.8 2014-11-20 10:39 <-- Last row of HOUR(Time) =10 for Name = A
15 B 9.9 2014-11-20 10:42 <-- Last row of HOUR(Time) =10 for Name = B
14 C 9.8 2014-11-20 10:42 <-- Last row of HOUR(Time) =10 for Name = C

+0

ли 'столбец Id' будет автоматически увеличивается первичный ключ ? –

+0

Да, это первичный ключ с автоматическим добавлением. – user2189138

ответ

0

Попробуйте это:

SELECT a.Id, a.Name, a.Vcum, a.Date, a.Time 
FROM tableA a 
INNER JOIN (SELECT a.Name, a.Date, MAX(a.Time) colTIme 
       FROM tableA a 
       GROUP BY a.Name, a.Date 
       ) b ON a.Name = b.Name AND a.Date = b.Date AND a.Time = b.colTime 
+0

Спасибо, часть выбора для внутреннего соединения возвращает только последние строки или говорят в последний раз каждого [Name] в день, а не в час. – user2189138

+0

Это работает, если изменить его на это, SELECT a.Id, a.Name, a.Vcum, a.Date, a.Time FROM tabkeA a INNER JOIN( SELECT a.Name, a.Date, MAX(a.Time) aTime FROM tabkeA a GROUP BY a.Name, HOUR(a.Time) ) b ON a.Name=b.Name AND a.Date=b.Date AND a.Time=b.aTime, спасибо Shah – user2189138

0

подсказка: вы должны сделать, как

select maxTime from tableName group by HOUR 

это будет работать я надеюсь, что так

+0

Спасибо Affan, но если я использую группу по HOUR, тогда только одно имя будет возвращаться за каждый час, который не то, что я хочу. – user2189138

+0

вам нужны последние данные, которые я пишу maxTime. если вы хотите получить все данные, тогда удалите часть maxData – Affan

+0

@ user2189138 С несколькими незначительными настройками это, безусловно, звучит так, как вы хотите!?! – Strawberry

Смежные вопросы