查询各科成绩前3和第3的学生(SQL)
数据库面试题:
其他关联表这里不一一写出,仅写出关键表(score)成绩表
成绩记录id | scoreid |
---|---|
学生id | userid |
课程id | scoureid |
成绩 | score |
现需要求出各科成绩前三名的学生和成绩,与相应的课程。
实现思路
用课程id自关联一次成绩表,如果相应课程成绩高则排名越高。
SELECT * FROM `score` a WHERE
(SELECT COUNT(*) FROM `score` b WHERE a.`sourceid`= b.`sourceid` AND b.`score`>a.`score`)<3 -- 即成绩前3
-- and (SELECT COUNT(*) FROM `score` b WHERE a.`sourceid`= b.`sourceid` AND b.`score`>a.`score`)>1-- 即成绩为第2名以后ORDER BY sourceid,score DESC;
显示结果:
又需要的可以尝试一下,网上找了很多解决办法,要么使用高级函数,要么逻辑很复杂,以下是建表语句
CREATE TABLE `score` (`scoreid` int(11) NOT NULL AUTO_INCREMENT,`sourceid` int(11) DEFAULT NULL,`userid` int(11) DEFAULT NULL,`score` int(11) DEFAULT NULL,PRIMARY KEY (`scoreid`)
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8;
相应数据SQL:
insert into `score`(`scoreid`,`sourceid`,`userid`,`score`) values (1,1,1,60),(2,2,1,80),(3,3,1,95),(4,1,2,75),(5,2,2,85),(6,3,2,90),(7,4,1,89),(8,4,2,88),(9,1,3,78),(10,2,3,87),(11,3,3,98),(12,4,3,76),(13,1,4,67),(14,2,4,76),(15,3,4,88),(16,4,4,77);
查询各科成绩前3和第3的学生(SQL)相关推荐
- Mysql查询各科成绩前三名并分别排序
Mysql查询各科成绩前三名并分别排序 这个问题是之前1个朋友学mysql他们老师布置的作业,一开始我没有做过,而且刚出来做开发很多学过的东西都忘记了. 表结构如下: 一开始我是这样写的: selec ...
- MySQL 查询学生的总成绩并进行排名_MySQL查询各科成绩前三名的记录及排名(不考虑成绩并列情况)...
MySQL查询各科成绩前三名的记录及排名(不考虑成绩并列情况) MySQL查询各科成绩前三名的记录及排名(不考虑成绩并列情况) 我的表结构: 先放代码 -- 查询各科成绩前三名的记录(不考虑成绩并列情 ...
- mysql查询各科成绩前三名的记录,sql查询各科成绩前三名----详述过程,思路清晰不烧脑...
使用mysql.hive查询各科成绩前三名 一.建表造数据 建表: create table scores( name varchar(100), subject varchar(100), scor ...
- sql查询成绩最高分_sql查询各科成绩前三名----详述过程,思路清晰不烧脑!
一.建表造数据 建表: create table scores( name varchar(100), subject varchar(100), score int ); 插入数据: insert ...
- sql查询各科成绩前三名----详述过程,思路清晰不烧脑!
一.建表造数据 建表: create table scores( name varchar(100), subject varchar(100), score int ); 插入数据: insert ...
- mysql将多个成绩放在一排_mysql巧用连表查询各科成绩前三名
下列是各表的详情,不想自己建表的同学可以直接copy code,数据随意. 创建表成绩详情表: CREATE TABLE score ( id int(10) NOT NULL AUTO_INCREM ...
- mysql查询各科成绩前三名的记录_mysql巧用连表查询各科成绩前三名
下列是各表的详情,不想自己建表的同学可以直接copy code,数据随意. 创建表成绩详情表: CREATE TABLE score ( id int(10) NOT NULL AUTO_INCREM ...
- sql统计各科成绩大于平均分的人_数据分析师SQL面试必备50题
以下是SQL面试必备的经典的50道题目,每道题都有博主本人的解题思路和对应的SQL语句. 每道题的思路与答案均为博主本人主观理解,仅供参考. 环境:MySQL8.0 可视化工具:Navicat 1.查 ...
- mysql查找各科分数相同的学生_mysql中 查询各科成绩都在80以上的学生的姓名
最近遇到一个关于mysql的查询的问题,就是在成绩表里查询各科成绩都在80以上(含80分)的学生姓名,在网上找了一个例子,供大家参考学习: 1. 2.也有人在网上用了别外的办法来查找,如下: 使用了分 ...
最新文章
- 一张图看懂字节跳动8年创业史,一路逆袭!
- 防止论坛用户重复登录的方法 .
- linux前台与后台进程调度(ps fg bg)
- Java开发,月薪30k需要掌握哪些主流技术?
- PCL:PCL1.9.0更新
- php 整数 比较,php中字符串和整数比较
- 读书笔记——《迁移到云原生架构》
- 给linux用户加入sudo权限
- 【逻辑与计算理论】组合子逻辑与 Y 组合子
- js获取精确宽度/高度(带小数位像素)
- 【NOI2016】网格,离散化+求割点
- 【codevs2492】【Tyvj1941】上帝造题的七分钟2,线段树的特别技巧
- 20150217 IMX257实现GPIO-IRQ中断按键驱动程序
- C# 实现支持markdown语法编辑器
- 关于加拿大IC认证变更为ISED认证亚马逊卖家需要注意那些问题?
- GIS开发中常用几何算法原理图解
- 企业微信接口错误代码汇总
- table表格自动换行
- 宝塔安装的数据库外网无法访问
- 关于数据库加密你不能不知道的秘密
热门文章
- cramfs根文件琐屑的运用
- 微服务架构从入门到精通(二)微服务生态体系
- 英特尔再推全新O2O解决方案,让智慧物联走进生活 —— 积极携手本地生态伙伴,攻坚数字标牌技术壁垒、创新O2O应用形态...
- 思维导图---SQL Queries for Mere Mortals (1 - 4章)
- android build.ninja,Android中的Ninja简介
- C++学习笔记-第7单元-文件输入输出流
- 项目工作总结 (转)
- B/S、C/S与RIA
- 开源对话机器人框架:Rasa概述【中小型公司使用Rasa框架,降低准入门槛。灵活性不够高】【可以本地部署】【保护数据隐私(其他框架需要将自己的数据上传到框架官方云服务器,不安全)】【可以重写一些类】
- Java基础——反射.