随笔- 310  文章- 1  评论- 0  阅读- 86009 

创建表

create table student ( 
    name varchar(20) , 
    lesson varchar(20), 
    mark float 
) ;

 

插入数据

复制代码
insert into student values('john','Math',60); 
insert into student values('john','Eng',50); 
insert into student values('john','HIstory',56); 

insert into student values('Mike','Eng',51); 
insert into student values('Mike','Math',59); 
insert into student values('Mike','HIstory',55); 

insert into student values('Mark','Eng',71); 
insert into student values('Mark','Math',89); 
insert into student values('Mark','HIstory',95); 

insert into student values('张三','Eng',61); 
insert into student values('张三','Math',79); 
insert into student values('张三','HIstory',85); 

insert into student values('李明','Eng',51); 
insert into student values('李明','Math',69); 
insert into student values('李明','HIstory',95);
复制代码

查询

复制代码
#方法一
SELECT T1.*
FROM student T1
LEFT JOIN (
SELECT DISTINCT lesson,mark
FROM student) T2 ON T1.lesson = T2.lesson AND T1.mark <= T2.mark GROUP BY name,lesson,mark 
HAVING COUNT(1) <= 3  ORDER BY lesson,mark DESC;


#方法二
SELECT s1.*
FROM student s1
WHERE (
SELECT COUNT(1)
FROM student s2
WHERE s1.lesson=s2.lesson AND s1.mark<s2.mark)<3
ORDER BY s1.lesson,s1.mark DESC;
复制代码

 

 posted on   boye169  阅读(2129)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
点击右上角即可分享
微信分享提示