admin 管理员组文章数量: 1086055
mysql 取top 10
mysql 5.7.18
表DDL如下
CREATE TABLE 'roadnet_monitor_flowdata2' (
'id' INT(10) DEFAULT NULL,
'交通类型' VARCHAR(4),
'出站人数' INT(10) DEFAULT NULL,
'日期' date,
'站点' VARCHAR(20),
'纬度' double DEFAULT NULL,
'线路' VARCHAR(8),
'经度' double DEFAULT NULL,
'结束时间' CHAR(8),
'起始时间' CHAR(8),
'进站人数' INT(10) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
模样如下:
数量大概是500W
现在我被一个需求难住了,选取各个起始时间线路进站人数的top10,也就是说要按起始时间分为72组,每组的线路按进站人数排序,选出72组top10
各种查也没有头绪。。。该怎么办呢?
索引如下:
根据高人指点,我写了一个sql语句
select @ln:=case when @起始时间=起始时间 then @ln+1 else 1 end ln,@起始时间:=起始时间 起始时间,线路,进站总数
from
(select 起始时间,线路,sum(进站人数) as 进站总数
from roadnet_monitor_flowdata2,(select @ln:=0) b
group by 起始时间,线路
order by 起始时间,sum(进站人数) desc) aa
having ln <= 10;
结果是
大家看到,ln不知道怎么回事,中间隔了一个,导致top10变成top6
另一个sql语句
select 起始时间,线路,进站总人数,gn from
(select
@gn:=case when @起始时间=起始时间 then @gn+1 else 1 end gn,@起始时间:=起始时间 起始时间,线路,sum(进站人数) as 进站总人数
from roadnet_monitor_flowdata2 t,(select @gn:=0) b
group by 起始时间,线路 order by 起始时间,进站总人数 desc) aa
where gn<=10 limit 100;
结果是
而这个gn全是1,gn<=10 完全没用,不是top10,而是全排行了。
到底该怎么办?
本文标签: mysql 取top 10
版权声明:本文标题:mysql 取top 10 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1688028300a170567.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论