Mysql 查询每个班级的成绩最好前三名(并列与不并列的情况) 您所在的位置:网站首页 少年onfire前三名 Mysql 查询每个班级的成绩最好前三名(并列与不并列的情况)

Mysql 查询每个班级的成绩最好前三名(并列与不并列的情况)

2023-12-14 18:49| 来源: 网络整理| 查看: 265

一、数据准备

 

CREATE TABLE IF NOT EXISTS  student(    id varchar(20),-- 编号    class varchar(20),-- 年级      stu_name varchar(20),-- 学生姓名    score int-- 分数 ); insert student values('1','classOne','Jack',82); insert student values('2','classOne','Jame',95); insert student values('3','classOne','Toney',82); insert student values('4','classOne','Nike',40); insert student values('5','classOne','Ha',20); insert student values('6','classOne','Tom',95); insert student values('7','classTwo','Elik',40); insert student values('8','classTwo','T',3); insert student values('9','classTwo','Kim',60); insert student values('10','classTwo','Tim',10); insert student values('11','classTwo','Li',95); insert student values('12','classThree','C.Ronaldo',60); insert student values('13','classThree','Messi',40); insert student values('14','classThree','Neymar',90); insert student values('15','classThree','Moyi',20); insert student values('16','classThree','Sun',70);

二、步入正题

(1)mysql实现分组查询每个班级的最高分

思路:使用max函数找出最高的分数,然后去关联 select a.class,a.stu_name,a.score from student a inner join (select max(score) as score, class as class from student group by class) b on a.class = b.class and a.score =b.score order by a.class;

(2)mysql实现分组查询每个班级的前三名(分数并列只取三个)

网上大多数版本如下:

select a.id,a.class,a.stu_name,a.score from student a where EXISTS (select count(*) from student b where a.class=b.class and a.score



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有