Mysql查询每个位置前5位最活跃的用户

时间:2017-12-25 10:40:50

标签: mysql

我需要根据每个位置的总使用量选择前5位活跃用户。

我的表结构是:

id  user  location date  usage
1    1      1     xxx   10
1    2      2     xxx   20
1    1      1     xxx   05
1    2      2     xxx   08
1    3      1     xxx   10
1    3      1     xxx   20
1    1      1     xxx   15
1    1      1     xxx   05
...
...
...

<小时/> 的更新 我需要限制此查询以返回每个位置的前5位用户

select `location` ,`user`,sum(`usage`) from `table`
group by `location`,`user`
order by `location` ASC,sum(`usage`) DESC

但是当我把

  

限制0,5

限制不适用于分组

<小时/> 更新:此查询限制组中的用户,但不会将用法总和

select `user`, `location`, `usage`
from 
(
    select `user`, `location`, `usage`,
    (@num:=if(@group = `location`, @num +1, if(@group := `location`, 1,1))) row_number 
    from `my_table` t
    CROSS JOIN (select @num:=0, @group:=null) c
    order by `location`, `usage` desc, `user`
) as x 
where x.row_number <= 2;

您可以查看demo

0 个答案:

没有答案