MySQL 选择前 10% 的用户

Posted

技术标签:

【中文标题】MySQL 选择前 10% 的用户【英文标题】:MySQL select top 10% of users 【发布时间】:2013-06-11 14:57:51 【问题描述】:

我有一个简单的 mysql 数据库,列出了每个用户每天在线花费的总时间(以秒为单位)(只是一个字符串)。我想在某一天选择前 10% 的用户并返回用户名。

有没有办法在 MySQL 中在单个查询中执行此操作..?我看过一些示例,您选择前 10 名用户,但不是基于总用户的百分比...

【问题讨论】:

***.com/questions/4741239/… 将时间字符串重构为整数值;然后使用 ORDER BY 和 LIMIT 【参考方案1】:

希望对你有帮助

我使用 CURRENT_DATE 来限制搜索。

SELECT user_id, date, total_time FROM
(
  SELECT user_id, @rownum:=@rownum+1 AS rownum 
  FROM TABLE_USER , (SELECT @rownum:=0) R
  WHERE date = CURRENT_DATE 
  ORDER by total_time desc
) temp 
where rownum < (select count(*) from TABLE_USER where date = CURRENT_DATE) / 10

【讨论】:

这似乎不起作用,我只是得到一个 _mysql_exceptions.OperationalError: (1054, "Unknown column 'user_id' in 'field list'") 错误,尽管该列在数据库中跨度> 【参考方案2】:

试试这个

     SELECT 0.1 * count(username)  as percented_users FROM prices
     GROUP BY username

【讨论】:

这只是返回 0.1 * 用户总数。我需要前 10%【参考方案3】:

你可以试试这个方法:

select * from table limit floor((select count(1) from table)*0.1)

【讨论】:

以上是关于MySQL 选择前 10% 的用户的主要内容,如果未能解决你的问题,请参考以下文章

VBA - 如何从一列中随机选择 10% 的行,确保它们不同并将 Y 放在 B 列中?

如何选择列表中最低 10% 的数字?

如何在mysql中选择前三行

mysql选择前n个最大值

选择 mysql 查询以获取前 100 个数字(1-100)[关闭]

如何从字段mysql中选择前20个字符后的字符