1.先创建表

CREATE TABLE IF NOT EXISTS  student(
   id varchar(20),-- 编号
   class varchar(20),-- 年级
   score int-- 分数
);

2.插入相关数据

INSERT INTO student VALUES ('1','一班',88);
INSERT INTO student VALUES ('2','一班',100);
INSERT INTO student VALUES ('3','一班',65);
INSERT INTO student VALUES ('4','一班',78);
INSERT INTO student VALUES ('5','一班',36);
INSERT INTO student VALUES ('6','二班',88);
INSERT INTO student VALUES ('7','二班',82);
INSERT INTO student VALUES ('8','二班',96);
INSERT INTO student VALUES ('9','二班',53);
INSERT INTO student VALUES ('10','二班',72);
INSERT INTO student VALUES ('11','三班',88);
INSERT INTO student VALUES ('12','三班',66);
INSERT INTO student VALUES ('13','三班',89);
INSERT INTO student VALUES ('14','三班',99);
INSERT INTO student VALUES ('15','三班',56);
INSERT INTO student VALUES ('16','三班',72);

3.查询

SELECT
    a.class,
    a.score
FROM
    student a
WHERE
    (
        SELECT
            count(*)
        FROM
            student
        WHERE
            a.class = class
        AND a.score < score
    ) < 3
ORDER BY
    a.class,
    a.score DESC;

结果

分析: 查询出每个班级的前三名就是 每个人统计处自己班级里超过自己分数的有几个,然后筛选出小于三个的

            where中的select是保证:遍历所有记录,取每条记录与当前记录做比较,只有当student表中同一班级不超过3个人分数    
          比自己高时,这个学生才算是分数排行的前三名。也就是括号里面是查询在这一班级中分数比他高的人的数量。

 

技术
©2019-2020 Toolsou All rights reserved,
Java中的lambda表达式如何理解——精简html+css+js制作简单网站首页java作业VHDL——4选1数据选择器C++OpenCV实战——车牌去雾、车牌检测、分割JAVA阶段考内容知识点的梳理计算机组成原理的简单学习java连接数据库实现基本的增删改查2022年第十三届蓝桥杯题解(全)3 4j不是合法的python表达式_3+4j不是合法的Python表达式。