如何解决查询以从表内的组中选择最高的十个值或最高的10%
| 我有一个包含大量用户的数据库,记录他们的住所以及他们登录该站点的次数。我正在寻找每个城市中最活跃的用户。 我知道如何找到每个城市中最活跃的用户:select user_id,city,max(login_count)
from user
group by city
但是,能够找到每个城市的10个最活跃的用户将非常有用。甚至更有用,但我怀疑在sql中可能无法实现(在活动方面排名前10%)。
如果有人可以提出如何完成一项或两项任务的想法,我将不胜感激。
我正在使用Navicat连接到MysqL服务器以完成此任务。
解决方法
如果使用的是MySql,则可以使用SELECT TOP 10 PERCENT语句。
喜欢
select top 10 percent * from (
select user_id,city,max(login_count)
from user
group by user_id,city
order by max(login_count))
,您可以按以下方式排名前10位:
select user_id,login_count
from user
group by user_id,city
order by city,login_count desc
limit 10
我不想经常运行该查询,因为它会非常慢,因为如果要查看说明计划,则需要在临时表上进行文件排序。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。