Dima Svider Dima Svider - 2 months ago 10
MySQL Question

MySQL: Select rows with max column value and corresponded datetime grouped by another column

My table is

IP HITS DATETIME
ip1 90 2016-09-10 01:15:37
ip2 13 2016-09-10 04:16:41
ip3 14 2016-09-10 05:17:41
ip2 12 2016-09-10 07:18:42
ip3 45 2016-09-10 09:19:42
ip1 88 2016-09-10 13:20:43
ip2 15 2016-09-10 15:21:43
ip3 26 2016-09-10 18:22:44


the result is

IP HITS DATETIME
ip1 90 2016-09-10 01:15:37
ip2 15 2016-09-10 15:21:43
ip3 45 2016-09-10 09:19:42


Any suggestions would be greatly appreciated.

Answer

Here is one way using Correlated sub-query

select * from yourtable a
where hits = (select max(hits) from yourtable b where a.IP = b.IP)

Another way using JOIN

SELECT a.IP,a.HITS,a.DATETIME
FROM   yourtable a 
       JOIN (SELECT Max(hits) AS max_hits, 
                    ip 
             FROM   yourtable 
             GROUP  BY ip) b 
         ON a.ip = b.ip 
            AND b.max_hits = a.hits