我需要找到一个班级前10%的学生(注意不是排名前10位的前10%)。
我的尝试 -
select *
From alphatable
LIMIT 0, (SELECT Floor(26*0.01))
但这是错误,让我知道我做错了什么?
小提琴 - Fiddle
修改
注意 - 这是一个虚拟数据..我的实际班级数据包含96名学生..那么让我知道发现的公式是否正确? (count_student_number*.01)
答案 0 :(得分:2)
尝试使用以下查询和公式查找前10%的学生:
SELECT Floor(100 * 0.1) INTO @my_limit;
PREPARE STMT FROM 'SELECT * FROM alphatable LIMIT ?';
EXECUTE STMT USING @my_limit;
注意:请在查询中添加其他必需的过滤器,并重新检查您的公式。
答案 1 :(得分:1)
考虑到Samsonjet的答案,试试这样:
SELECT FLOOR(
(SELECT 10*(SELECT COUNT(*)
FROM alphatable)/100))
INTO @top_10_percent;
PREPARE STMT FROM 'SELECT *
FROM alphatable
ORDER BY occurnence LIMIT ?';
EXECUTE STMT USING @top_10_percent;
它将按给定的表计算您的前10%,并将结果计算在底。
在这里检查你的小提琴:http://www.sqlfiddle.com/#!2/f9fb0b/74