我需要找到一个班级的前 10%(注意它不是前 10 名的前 10%)学生。
我的尝试——
select *
From alphatable
LIMIT 0, (SELECT Floor(26*0.01))
但它抛出错误,让我知道我做错了什么?
小提琴 -小提琴
编辑
注意-这是一个虚拟数据..我的实际班级数据包含 96 名学生..所以让我知道找到的公式是否正确? (count_student_number*.01)
尝试以下查询和公式来查找前 10% 的学生:
SELECT Floor(100 * 0.1) INTO @my_limit;
PREPARE STMT FROM 'SELECT * FROM alphatable LIMIT ?';
EXECUTE STMT USING @my_limit;
注意:请在查询中添加其他必需的过滤器,并重新检查您的公式。
考虑到 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