mysql选择最大值所在的同一行的sum,max和另一个列值

时间:2016-01-13 08:39:41

标签: mysql sql

样本表:

uid time_stp                traf
1   2016-01-13 00:00:00     6
1   2016-01-13 05:00:00     8
1   2016-01-13 10:00:00     14
1   2016-01-13 15:00:00     26
1   2016-01-13 20:00:00     42
...

我的SQL:

select
    uid,
    from_unixtime(floor(unix_timestamp(time_stp)/3600) * 3600) as tm,
    sum(traf),
    max(traf),
    -- xxx as max_traf_time
from
    group_by_time_range
group by
    uid, tm;

我希望每小时traf总和,并在每小时部分找到最大traf和相应的time_stp。我怎么能用一个SQL语句来完成这些东西。

1 个答案:

答案 0 :(得分:0)

你试过吗

select
    T1.uid,
    from_unixtime(floor(unix_timestamp(time_stp)/3600) * 3600) as tm,
    sum(traf),
    (
     SELECT max(traf)
     FROM group_by_time_range T2
     WHERE T2.uid = T1.uid
    ) as Max_Traf,
    (
     SELECT time_stp
     FROM group_by_time_range T3
     WHERE traf = Max_Traf
    ) as max_traf_time
from
    group_by_time_range T1
group by
    uid, tm;