| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 318 人关注过本帖
标题:各位大侠,使用SQL语句能否一次性取得各班成绩前20%的学生的信息
只看楼主 加入收藏
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10948
专家分:43591
注 册:2014-5-20
收藏
得分:0 
回复 9楼 schtg
我只是一个算法,具体数据按实际情况去组织,按班算就算 班的记录数*20%


13 小时前
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10948
专家分:43591
注 册:2014-5-20
收藏
得分:0 
回复 10楼 my2318
3楼提到的问题,如果20%中最后一个与跟随其后面的一个成绩相同就有问题。
13 小时前
schtg
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:Usa
等 级:贵宾
威 望:67
帖 子:2361
专家分:4878
注 册:2012-2-29
收藏
得分:0 
我知道基本上只能先分班获取再合成一个新表,谢谢各位!
2 小时前
yiyanxiyin
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:9
帖 子:341
专家分:2327
注 册:2023-6-29
收藏
得分:0 
SELECT
    s1.class_id,
    s1.student_id,
    s1.student_name,
    s1.score
FROM students s1
WHERE (
    -- 计算比当前学生成绩高的同班学生数
    SELECT COUNT(*)
    FROM students s2
    WHERE s2.class_id = s1.class_id
      AND s2.score > s1.score
) < (
    -- 计算班级总人数的20%(向上取整)
    SELECT CEIL(COUNT(*) * 0.2)
    FROM students s3
    WHERE s3.class_id = s1.class_id
)
ORDER BY s1.class_id, s1.score DESC;
看看这个思路
2 小时前
schtg
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:Usa
等 级:贵宾
威 望:67
帖 子:2361
专家分:4878
注 册:2012-2-29
收藏
得分:0 
回复 14楼 yiyanxiyin
谢谢!试一试哈。
2 小时前
快速回复:各位大侠,使用SQL语句能否一次性取得各班成绩前20%的学生的信息
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011119 second(s), 7 queries.
Copyright©2004-2025, BC-CN.NET, All Rights Reserved