当前位置: 首页 > news >正文

【SQL练习】找出每一科都是前30%的学生ID

分数表 scores,字段:id, subject, score

找出每一科都是前30%的学生ID。

造数据:

import pandas as pd
import numpy as np
import random# 设置随机种子保证结果可重现
np.random.seed(42)def generate_score_data(num_students=50, num_subjects=5):"""生成学生成绩模拟数据"""# 定义学科名称subjects = ['数学', '英语', '科学', '历史', '艺术']# 生成学生IDstudent_ids = [f'S{i:03d}' for i in range(1, num_students + 1)]# 创建空的数据框data = []# 为每个学生生成每科成绩for student_id in student_ids:for subject in subjects:# 使用正态分布生成成绩,均值为70,标准差为15,并限制在0-100之间score = np.random.normal(70, 15)score = max(0, min(100, int(score)))  # 限制在0-100范围内data.append([student_id, subject, score])# 创建DataFramedf = pd.DataFrame(data, columns=['id', 'subject', 'score'])return df, subjects# 生成数据
scores_df, subject_list = generate_score_data()print("前10条数据示例:")
print(scores_df.head(10))

sql:

WITH subject_total AS (SELECT subject, COUNT(*) AS totalFROM scoresGROUP BY subject
),
student_subjects AS (SELECT id, COUNT(*) AS total_subjectsFROM scoresGROUP BY id
),
ranked_scores AS (SELECT id, subject, RANK() OVER (PARTITION BY subject ORDER BY score DESC) AS rankFROM scores
)
SELECT r.id
FROM ranked_scores r
JOIN subject_total st ON r.subject = st.subject
JOIN student_subjects s ON r.id = s.id
WHERE r.rank <= st.total * 0.3
GROUP BY r.id
HAVING COUNT(*) = s.total_subjects;
http://www.jsqmd.com/news/52759/

相关文章:

  • 2025 年 11 月超声设备厂家权威推荐榜:河北/山西/辽宁/江苏/浙江/山东/广东/四川等区域实力品牌深度解析与选购指南
  • 深入解析:突破构建瓶颈:Zulip前端Webpack持久化缓存深度优化
  • 从深度学习基础到稳定扩散技术解析
  • 环保型反渗透设备TOP5权威推荐:精品定制服务商深度测评,助
  • 2025年鸿容AI智能办公鼠标年度排名:深度测评5大AI鼠标
  • 中国口碑最好的生发品牌黑奥秘:19 年深耕,四大理疗 + 加盟赋能双驱动
  • 2025年评价高的陕西人参皂苷Top实力厂家排行榜
  • 1127
  • VMware Ubuntu虚拟机安装 备忘录
  • Path-面向对象的文件系统路径操作
  • 2025年东北与新疆地区胶粘剂品牌口碑榜:爱建胶业口碑好
  • 2025 年 11 月常州宠物医院权威推荐榜:市区天宁区专业诊疗与暖心服务口碑之选
  • TikTok广告开户投放服务商TOP7实力榜单发布
  • 涂鸦智能:智能猫砂盆背后的AIoT“赋能者”
  • Qt 判断鼠标在控件上
  • 智能喂鸟器方案商推荐:涂鸦智能以技术实力引领行业创新
  • 2025年现浇混凝土企业推荐,楼板现浇/现浇楼梯/现浇别墅搭建/现浇楼板/现浇钢筋混凝土楼梯/现浇混凝土公司哪个好哪家好
  • Actix-Web中间件开发
  • S11e Protocol:点燃共创之火 重构RWA品牌未来 - 详解
  • 2025年高压空气充填泵厂家权威推荐榜单:空气充填泵/高压空气压缩机/高压压缩机源头厂家精选
  • 磨砂膏里的颗粒会伤害鸡皮肤吗?2025年安全评测与产品推荐
  • kubeadm证书过期解决方法
  • 扫地机器人方案商推荐:涂鸦智能如何助力厂商赢得市场竞争
  • 涂鸦智能:窗帘电机的智能解决方案,助力企业抢占市场先机
  • 涂鸦智能:宠物饮水机智能化的首选方案商
  • Qt 获取容器Vector中的最大值和最小值
  • 2025年广州树脂公司排行榜:欧晨麒化工9.99分登顶,全品类树脂领跑市场
  • vue3项目解析token信息
  • 2025中国AI云计算TOP10权威推荐榜单!靠谱智算云厂商推荐榜!
  • 2025年十大山东胶粘剂品牌排行榜,爱建胶性价比怎么样?