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 列中?