当前位置: 首页 > news >正文

建筑设计专业的网站指数函数

建筑设计专业的网站,指数函数,京东云建站,店面设计包括哪些内容查询各科成绩前三名的记录 解法(不考虑并列的情况) 该解法是不考虑并列的情况下 注意:此解法的前提是忽略成绩并列情况,否则出来的结果有问题。 先给结果sql,再讲思路: SELECTa.s_id,a.c_id,a.s_score …

查询各科成绩前三名的记录

解法(不考虑并列的情况)

该解法是不考虑并列的情况下
注意:此解法的前提是忽略成绩并列情况,否则出来的结果有问题。
先给结果sql,再讲思路:

SELECTa.s_id,a.c_id,a.s_score 
FROMscore aLEFT JOIN score b ON a.c_id = b.c_id AND a.s_score <= b.s_score 
GROUP BYa.s_id,a.c_id,a.s_score 
HAVINGCOUNT( b.s_id ) <= 3 
ORDER BYa.c_id,a.s_score DESC

思路:
1.首先我们可以看下表结构,如下

图片

  1. 两表进行关联后的结果:
SELECTa.s_id,a.c_id,a.s_score 
FROMscore aLEFT JOIN score b ON a.c_id = b.c_id 

图片
加入a.s_score<b.s_score然后接下来这个继续分析这个语句:

SELECTa.s_id,a.c_id,a.s_score 
FROMscore aLEFT JOIN score b ON a.c_id = b.c_id AND a.s_score < b.s_score 

也就是我们现在是a表的成绩,要小于或者等于关联的b表的成绩,我们拿a表一条数据来分析:
图片
关联后的表为:
图片
那么此时a.score = 90,执行a.score<=b.score ,则出来的结果只有1条:
图片
我们拿课程1的第二名的记录来继续分析:
图片
表关联后的结果为:
图片
此时a.score = 80,则执行a.score<=b.score,过滤后的结果为2条记录,即
图片
拿课程1的第三条记录来分析,则
图片
关联后的结果为:
图片
此时a.score = 70,执行a.score<=b.socre,则过滤后的结果为3条记录:
图片
到这里我们可以知道,排名第一,过滤出一条,排名第二, 过滤出2条,排名第三,过滤出第三条,依次类推,排名第四,过滤4条,排名第五,过滤5条…
接着分组,这个按a表的学生id、课程id、成绩分组即可。
然后我们要的是前三名的记录,我们根据我们推出的结果,也就是count(a.s_id)<=3即可得出前三名。

SELECTa.s_id,a.c_id,a.s_score 
FROMscore aLEFT JOIN score b ON a.c_id = b.c_id AND a.s_score <= b.s_score 
GROUP BYa.s_id,a.c_id,a.s_score 
HAVINGCOUNT( b.s_id ) <= 3 

最后再按课程号进行排序,再按成绩进行降序显示即可

SELECTa.s_id,a.c_id,a.s_score 
FROMscore aLEFT JOIN score b ON a.c_id = b.c_id AND a.s_score <= b.s_score 
GROUP BYa.s_id,a.c_id,a.s_score 
HAVINGCOUNT( b.s_id ) <= 3 
ORDER BYa.c_id,a.s_score DESC

解法2(考虑并列的情况)

该解法是考虑并列的情况下

考虑并列的解法:

SELECTs1.*
FROMscore s1
WHERE(SELECTcount(1)FROMscore s2WHEREs2.c_id = s1.c_idAND s2.s_score > s1.s_score) < 3
ORDER BYs1.c_id,s1.s_id

并列情况下的结果集举例:
在这里插入图片描述

https://blog.csdn.net/qq_41933709/article/details/84928157

查询各科成绩前二名的记录

学生成绩表 :

CREATE TABLE `tabscore` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `stuId` int(11) DEFAULT NULL,
  `stuName` varchar(255) DEFAULT NULL,
  `course` varchar(255) DEFAULT NULL,
  `score` float(3,1) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;


INSERT INTO `tabscore` VALUES ('1', '1', '张三', '语文', '85.0');
INSERT INTO `tabscore` VALUES ('2', '1', '张三', '数学', '89.0');
INSERT INTO `tabscore` VALUES ('3', '2', '李四', '语文', '85.0');
INSERT INTO `tabscore` VALUES ('4', '2', '李四', '数学', '80.0');
INSERT INTO `tabscore` VALUES ('5', '3', '王五', '语文', '85.0');
INSERT INTO `tabscore` VALUES ('6', '3', '王五', '数学', '99.0');

要求查询每科目前两名学生及成绩

select tabscore.* from tabscore
where 
(select count(1) from tabscore tb2 where tb2.course = tabscore.course and tb2.score>tabscore.score)<2


http://www.lbrq.cn/news/2577385.html

相关文章:

  • 怎么在网站后台做图片新闻网页制作与设计
  • 电影片头在线制作网站免费关键词搜索工具
  • 个人信息网站模板凡科建站登录
  • 焦作做网站哪家好百度服务中心人工客服电话
  • 营销公司网站信息流优化师是做什么的
  • 中企动力做网站要全款深圳百度搜索排名优化
  • 大连网站建设价格百度网盘网页版登录
  • 怎么做自己下单的网站aso优化技巧大aso技巧
  • 郑州设计师网站经典软文案例或软文案例
  • 旅游电商网站有哪些流量购买网站
  • 360网站运营关键词优化教程
  • 北京建设执业资格注册网站成都百度推广排名优化
  • phpstudy如何建设网站快推广app下载
  • 网站仿站大多少钱google收录查询
  • 中学网站系统源码抖音seo排名
  • 用手机搭建网站seo网站建设优化
  • 网站有做货百度登录首页
  • 福建省建设人才与科技发展中心网站首页软文广告文案案例
  • 建立个人网站费用今天的头条新闻
  • 株洲网站优化找哪家知乎推广优化
  • 南阳集团网站建设seo网站推广方式
  • 好网站制作今日军事新闻视频
  • 动漫培训广西seo搜索引擎优化
  • 上海沪港建设咨询有限公司网站百度搜索榜
  • 杭州哪家做外贸网站百度输入法下载
  • 建下载网站怎么做seo网站关键词优化
  • 自己公司做网站最新国际新闻10条
  • 网站推广自己可以做吗世界十大搜索引擎及地址
  • 网站建设方案ppt 枫子科技武汉seo首页
  • 商赢网站建设网络推广哪个平台最好
  • 【1】WPF界面开发入门—— 图书馆程序:登录界面设计
  • ADB 查看 CPU 信息、查看内存信息、查看硬盘信息
  • Linux进程间通信——system V信号量
  • 小迪23-28~31-js简单回顾
  • 编译器工作原理的显微镜级拆解
  • 机试01-C++基础语法与库函数