-1

我需要找到一个班级的前 10%(注意它不是前 10 名的前 10%)学生。

我的尝试——

select *
From alphatable
LIMIT 0, (SELECT Floor(26*0.01))

但它抛出错误,让我知道我做错了什么?

小提琴 -小提琴

编辑 注意-这是一个虚拟数据..我的实际班级数据包含 96 名学生..所以让我知道找到的公式是否正确? (count_student_number*.01)

4

2 回答 2

2

尝试以下查询和公式来查找前 10% 的学生:

SELECT Floor(100 * 0.1) INTO @my_limit;
PREPARE STMT FROM 'SELECT * FROM alphatable LIMIT ?';
EXECUTE STMT USING @my_limit;

注意:请在查询中添加其他必需的过滤器,并重新检查您的公式。

于 2013-06-30T19:00:21.147 回答
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

于 2013-06-30T19:17:31.153 回答