美文网首页
查询各个科目成绩前三的记录

查询各个科目成绩前三的记录

作者: Zzz_CH | 来源:发表于2019-06-19 15:33 被阅读0次
id student_id name course_id course_name score
1 2005001 张三 1 数学 69
2 2005002 李四 1 数学 89
3 2005005 王五 1 数学 23
3 2005001 张三 2 语文 69
3 2005002 李四 2 语文 73
3 2005005 王五 2 语文 88
1 2005006 赵六 2 语文 69
2 2005006 赵六 1 数学 89
3 2005007 郑七 2 语文 100
CREATE TABLE `test` (
  `id`          INT UNSIGNED NOT NULL AUTO_INCREMENT,
  `student_id`  INT UNSIGNED NOT NULL,
  `name`        VARCHAR(20)  NOT NULL,
  `course_id`   INT UNSIGNED NOT NULL,
  `course_name` VARCHAR(20)  NOT NULL,
  `score`       INT UNSIGNED NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE = InnoDB;

INSERT INTO `test` (`student_id`, `name`, `course_id`, `course_name`, `score`)
VALUES (2005001, '张三', 1, '数学', 69),
       (2005002, '李四', 1, '数学', 80),
       (2005005, '王五', 1, '数学', 23),
       (2005001, '张三', 2, '语文', 69),
       (2005002, '李四', 2, '语文', 73),
       (2005005, '王五', 2, '语文', 88),
       (2005006, '赵六', 2, '语文', 69),
       (2005006, '赵六', 1, '数学', 89),
       (2005007, '郑七', 2, '语文', 100);

1. 用一条 SQL 语句查询出每门课都大于 80 分的学生姓名

理解:分数最小的那门课大于80,自然每门课都大于80了。

SELECT `name` FROM `test` GROUP BY `name` HAVING min(`score`) >= 80;

2. 查询各个科目成绩前三的记录

思路:查出该科成绩超过他的人数小于3的学生,再进行排列

SELECT `student_id`, `name`, `course_id`, `course_name`, `score`
FROM `test` `t1`
WHERE (
  SELECT count(1) FROM `test` `t2`
    WHERE `t1`.`course_id` = `t2`.`course_id`
    AND `t1`.`score` < `t2`.`score`
) < 3
ORDER BY `course_id`, `score` DESC;
查询结果

相关文章

  • 查询各个科目成绩前三的记录

    1. 用一条 SQL 语句查询出每门课都大于 80 分的学生姓名 理解:分数最小的那门课大于80,自然每门课都大于...

  • partition by 语法

    查询成绩表每科前3名: select * from( select 学生ID,科目,score,ROW_NUMBE...

  • sql

    sql语句:表【学生|科目|成绩】查询每个学生成绩最好的科目和成绩 参考:https://www.zhihu.co...

  • 成绩登统

    查询卷面成绩和形考成绩有哪些科目不可以录入

  • 18复试:不想被刷谨记这九点

    目前,很多高校公布了自命题科目的成绩,各地区的统考科目成绩查询时间也已临近~ 复试环节更是考研的重中之重,不可小觑...

  • 科目三,成绩的背后

    刚刚通过科目三考试,虽然成绩合格了,但是也经历了曲曲折折,并且让人提心吊胆。 科目三,除了必须要掌握扎实的基本功外...

  • 广东省|自考报考流程

    1、确定你的自考专业 查询各个自考专业需要考什么科目: http://www.5184.com/zikao/zhu...

  • 关于木桶理论的思考

    木桶理论是学生时代很常见的一个提法,就是学生的各个科目是一块一块木板,各个科目成绩的高低代表木板的长短,然后木板围...

  • 科目三记录

    科三一共3次训练,我因为时间问题,学了1次,后面两次取消了,打算明年再学,这里先记录下来,免得后面忘了。 一、考试...

  • 图解面试题:如何分组比较?

    ​【题目】 现有“成绩表”,记录了每个学生各科的成绩。表内容如下: 问题:查找单科成绩高于该科目平均成绩的学生名单...

网友评论

      本文标题:查询各个科目成绩前三的记录

      本文链接:https://www.haomeiwen.com/subject/jszhqctx.html