当前位置: 首页 > 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.zskr.cn/news/62714.html

相关文章:

  • 2025年鸿容AI智能办公鼠标年度排名:深度测评5大AI鼠标
  • 1127
  • VMware Ubuntu虚拟机安装 备忘录
  • 2025 年 11 月常州宠物医院权威推荐榜:市区天宁区专业诊疗与暖心服务口碑之选
  • TikTok广告开户投放服务商TOP7实力榜单发布
  • 2025年现浇混凝土企业推荐,楼板现浇/现浇楼梯/现浇别墅搭建/现浇楼板/现浇钢筋混凝土楼梯/现浇混凝土公司哪个好哪家好
  • Actix-Web中间件开发
  • 磨砂膏里的颗粒会伤害鸡皮肤吗?2025年安全评测与产品推荐
  • F037 vue+neo4j 编程语言知识图谱可视化分析系统vue+flask+neo4j - 指南
  • 监控摄像头方案商推荐:涂鸦智能如何破解企业转型痛点
  • 涂鸦智能:窗帘电机的智能解决方案,助力企业抢占市场先机
  • Qt 获取容器Vector中的最大值和最小值
  • vue3项目解析token信息
  • 2025中国AI云计算TOP10权威推荐榜单!靠谱智算云厂商推荐榜!
  • 交叉编译hostop
  • EF Core 深入学习
  • 2025年五大靠谱纸桶包装设备制造商推荐,专业纸桶包装设备厂
  • 2025年深圳USB充电器外壳厂家推荐:安全环保充电器外壳厂
  • .Net中WebApiController如何实现多版本兼容?
  • 写题-2025.11
  • Git 安装流程
  • 2025年襄阳地区十大包装盒定制企业推荐:知名的包装盒机构有
  • 2025年深圳东莞惠州塑胶外壳定制公司推荐:安全环保的塑胶外
  • 八数码难题
  • 【转载】Qt QCustomPlot 使用教程
  • 2025年11月营销智能体选择指南:权威榜单与用户评价深度分析
  • 2025年11月营销智能体推荐榜单:五大主流平台深度对比与选择指南
  • 八皇后
  • 机器学习如何优化MRI扫描速度与质量
  • linux系统下独立声卡继电器总是自动反复吸合