数据库面试题:

其他关联表这里不一一写出,仅写出关键表(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)相关推荐

  1. Mysql查询各科成绩前三名并分别排序

    Mysql查询各科成绩前三名并分别排序 这个问题是之前1个朋友学mysql他们老师布置的作业,一开始我没有做过,而且刚出来做开发很多学过的东西都忘记了. 表结构如下: 一开始我是这样写的: selec ...

  2. MySQL 查询学生的总成绩并进行排名_MySQL查询各科成绩前三名的记录及排名(不考虑成绩并列情况)...

    MySQL查询各科成绩前三名的记录及排名(不考虑成绩并列情况) MySQL查询各科成绩前三名的记录及排名(不考虑成绩并列情况) 我的表结构: 先放代码 -- 查询各科成绩前三名的记录(不考虑成绩并列情 ...

  3. mysql查询各科成绩前三名的记录,sql查询各科成绩前三名----详述过程,思路清晰不烧脑...

    使用mysql.hive查询各科成绩前三名 一.建表造数据 建表: create table scores( name varchar(100), subject varchar(100), scor ...

  4. sql查询成绩最高分_sql查询各科成绩前三名----详述过程,思路清晰不烧脑!

    一.建表造数据 建表: create table scores( name varchar(100), subject varchar(100), score int ); 插入数据: insert ...

  5. sql查询各科成绩前三名----详述过程,思路清晰不烧脑!

    一.建表造数据 建表: create table scores( name varchar(100), subject varchar(100), score int ); 插入数据: insert ...

  6. mysql将多个成绩放在一排_mysql巧用连表查询各科成绩前三名

    下列是各表的详情,不想自己建表的同学可以直接copy code,数据随意. 创建表成绩详情表: CREATE TABLE score ( id int(10) NOT NULL AUTO_INCREM ...

  7. mysql查询各科成绩前三名的记录_mysql巧用连表查询各科成绩前三名

    下列是各表的详情,不想自己建表的同学可以直接copy code,数据随意. 创建表成绩详情表: CREATE TABLE score ( id int(10) NOT NULL AUTO_INCREM ...

  8. sql统计各科成绩大于平均分的人_数据分析师SQL面试必备50题

    以下是SQL面试必备的经典的50道题目,每道题都有博主本人的解题思路和对应的SQL语句. 每道题的思路与答案均为博主本人主观理解,仅供参考. 环境:MySQL8.0 可视化工具:Navicat 1.查 ...

  9. mysql查找各科分数相同的学生_mysql中 查询各科成绩都在80以上的学生的姓名

    最近遇到一个关于mysql的查询的问题,就是在成绩表里查询各科成绩都在80以上(含80分)的学生姓名,在网上找了一个例子,供大家参考学习: 1. 2.也有人在网上用了别外的办法来查找,如下: 使用了分 ...

最新文章

  1. 一张图看懂字节跳动8年创业史,一路逆袭!
  2. 防止论坛用户重复登录的方法 .
  3. linux前台与后台进程调度(ps fg bg)
  4. Java开发,月薪30k需要掌握哪些主流技术?
  5. PCL:PCL1.9.0更新
  6. php 整数 比较,php中字符串和整数比较
  7. 读书笔记——《迁移到云原生架构》
  8. 给linux用户加入sudo权限
  9. 【逻辑与计算理论】组合子逻辑与 Y 组合子
  10. js获取精确宽度/高度(带小数位像素)
  11. 【NOI2016】网格,离散化+求割点
  12. 【codevs2492】【Tyvj1941】上帝造题的七分钟2,线段树的特别技巧
  13. 20150217 IMX257实现GPIO-IRQ中断按键驱动程序
  14. C# 实现支持markdown语法编辑器
  15. 关于加拿大IC认证变更为ISED认证亚马逊卖家需要注意那些问题?
  16. GIS开发中常用几何算法原理图解
  17. 企业微信接口错误代码汇总
  18. table表格自动换行
  19. 宝塔安装的数据库外网无法访问
  20. 关于数据库加密你不能不知道的秘密

热门文章

  1. cramfs根文件琐屑的运用
  2. 微服务架构从入门到精通(二)微服务生态体系
  3. 英特尔再推全新O2O解决方案,让智慧物联走进生活 —— 积极携手本地生态伙伴,攻坚数字标牌技术壁垒、创新O2O应用形态...
  4. 思维导图---SQL Queries for Mere Mortals (1 - 4章)
  5. android build.ninja,Android中的Ninja简介
  6. C++学习笔记-第7单元-文件输入输出流
  7. 项目工作总结 (转)
  8. B/S、C/S与RIA
  9. 开源对话机器人框架:Rasa概述【中小型公司使用Rasa框架,降低准入门槛。灵活性不够高】【可以本地部署】【保护数据隐私(其他框架需要将自己的数据上传到框架官方云服务器,不安全)】【可以重写一些类】
  10. Java基础——反射.