简体   繁体   中英

How to select last row of each hour in a day?

From MySQL database, I want to get all last rows of each hour in a day, the table look like this,

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
Is that possible to get the following result by using 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

hint : you have to do like

   select maxTime from tableName group by HOUR

this will work i hope so

Try this:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM