查找课程不及格学生最多的前5名老师的id

表:student

字段名 类型 是否为空 主键 描述
StdID int 学生ID
StdName varchar(100) 学生姓名
Gender enum('M','F') 性别
Age int 年龄

表:Course

字段名 类型 是否为空 主键 描述
CouID int 课程ID
CName varchar(100) 课程名称
TID int 老师ID

表:Score

字段名 类型 是否为空 主键 描述
SID int 分数ID
StdDI int 学生ID
CouID int 课程ID
Grade int 分数

表:teacher

字段名 类型 是否为空 主键 描述
TID int 老师ID
Tname varchar(100) 老师姓名

思路:

1、找出分数低于60分的数据 ( SELECT 要查找的数据 FROM 要查找的表 WHERE 查找条件; )

mysql> SELECT Score.Grade FROM Score WHERE Score.Grade < 60;

|    23 |
+-------+
5893 rows in set (0.00 sec)

2、找出低于60分的课和ID

mysql> SELECT Score.CouID, Score.Grade FROM Score WHERE Score.Grade < 60;

|    14 |    23 |
+-------+-------+
5893 rows in set (0.00 sec)

3、找出与客程ID都关联的teacher id ( Join 联查的表 ON 联查的条件; )

mysql> SELECT Score.CouID, Course.TID FROM Score
-> JOIN Course ON Score.CouID = Course.CouID and Score.Grade < 60; | 16 | 7 |
| 14 | 3 |
+-------+-----+
5893 rows in set (0.01 sec)

4、找出与课程teacher id 相对应的 teacher name ( Join 联查的表 ON 联查的条件1 AND 联查的条件2; )

mysql> SELECT Score.CouID, Course.TID, Teacher.TName as teacher_count FROM Score
-> JOIN Course ON Score.CouID = Course.CouID and Score.Grade < 60
-> JOIN Teacher ON Course.TID = Teacher.TID; | 16 | 7 | 3e773c |
| 14 | 3 | 23cdcaf356e |
+-------+-----+---------------+
5893 rows in set (0.01 sec)

5、将teacher id 分组、统计相同 teacher ID 出现在次数 ( COUNT(排序的内容) as 别名; GROUP BY 分组条件 )

mysql> SELECT Course.CouID, Course.TID, Teacher.TName, COUNT(Course.TID) as teacher_count FROM Course
-> JOIN Score ON Score.CouID = Course.CouID and Score.Grade < 60
-> JOIN Teacher ON Course.TID = Teacher.TID
-> GROUP BY Course.TID;
+-------+-----+--------------+---------------+
| CouID | TID | TName | teacher_count |
+-------+-----+--------------+---------------+
| 15 | 1 | 8dcd0f6f4c67 | 1195 |
| 11 | 2 | 852c304e | 615 |
| 14 | 3 | 23cdcaf356e | 534 |
| 18 | 4 | 6ab | 582 |
| 19 | 5 | 60aea3314c | 562 |
| 17 | 6 | e2376f | 575 |
| 12 | 7 | 3e773c | 1830 |
+-------+-----+--------------+---------------+
7 rows in set (0.02 sec)

6、将分组、统计后的数据排序 ( ORDER BY 要排序的内容 )

mysql> SELECT Course.CouID, Course.TID, Teacher.TName, COUNT(Course.TID) as teacher_count FROM Course
-> JOIN Score ON Score.CouID = Course.CouID and Score.Grade < 60
-> JOIN Teacher ON Course.TID = Teacher.TID
-> GROUP BY Course.TID
-> ORDER by teacher_count;
+-------+-----+--------------+---------------+
| CouID | TID | TName | teacher_count |
+-------+-----+--------------+---------------+
| 14 | 3 | 23cdcaf356e | 534 |
| 19 | 5 | 60aea3314c | 562 |
| 17 | 6 | e2376f | 575 |
| 18 | 4 | 6ab | 582 |
| 11 | 2 | 852c304e | 615 |
| 15 | 1 | 8dcd0f6f4c67 | 1195 |
| 12 | 7 | 3e773c | 1830 |
+-------+-----+--------------+---------------+
7 rows in set (0.00 sec)

5、将排序反序 ( ORDER BY 要排序的内容 DESC )

mysql> SELECT Course.CouID, Course.TID, Teacher.TName, COUNT(Course.TID) as teacher_count FROM Course
-> JOIN Score ON Score.CouID = Course.CouID and Score.Grade < 60
-> JOIN Teacher ON Course.TID = Teacher.TID
-> GROUP BY Course.TID
-> ORDER by teacher_count DESC;
+-------+-----+--------------+---------------+
| CouID | TID | TName | teacher_count |
+-------+-----+--------------+---------------+
| 12 | 7 | 3e773c | 1830 |
| 15 | 1 | 8dcd0f6f4c67 | 1195 |
| 11 | 2 | 852c304e | 615 |
| 18 | 4 | 6ab | 582 |
| 17 | 6 | e2376f | 575 |
| 19 | 5 | 60aea3314c | 562 |
| 14 | 3 | 23cdcaf356e | 534 |
+-------+-----+--------------+---------------+
7 rows in set (0.01 sec)

6、取课程不及格学生最多的前5名老师 ( LIMIT N )

mysql> SELECT Course.CouID, Course.TID, Teacher.TName, COUNT(Course.TID) as teacher_count FROM Course
-> JOIN Score ON Score.CouID = Course.CouID and Score.Grade < 60
-> JOIN Teacher ON Course.TID = Teacher.TID
-> GROUP BY Course.TID
-> ORDER by teacher_count DESC
-> LIMIT 5;
+-------+-----+--------------+---------------+
| CouID | TID | TName | teacher_count |
+-------+-----+--------------+---------------+
| 12 | 7 | 3e773c | 1830 |
| 15 | 1 | 8dcd0f6f4c67 | 1195 |
| 11 | 2 | 852c304e | 615 |
| 18 | 4 | 6ab | 582 |
| 17 | 6 | e2376f | 575 |
+-------+-----+--------------+---------------+
5 rows in set (0.01 sec)

7、取前5名老师的ID

mysql> SELECT TID FROM
-> (
#将上面查询出的结果,做为一个表,提供给另一个查询语句查询
-> (SELECT Course.CouID, Course.TID, Teacher.TName, COUNT(Course.TID) as teacher_count FROM Course
-> JOIN Score ON Score.CouID = Course.CouID and Score.Grade < 60
-> JOIN Teacher ON Course.TID = Teacher.TID
-> GROUP BY Course.TID
-> ORDER by teacher_count DESC
-> LIMIT 5)
-> as teacher_tid # 必须将结果命名为一个表
-> ); +-----+
| TID |
+-----+
| 7 |
| 1 |
| 2 |
| 4 |
| 6 |
+-----+
5 rows in set (0.00 sec)

python 查询数据的更多相关文章

  1. 使用Connector / Python连接MySQL/查询数据

    使用Connector / Python连接MySQL connect()构造函数创建到MySQL服务器的连接并返回一个 MySQLConnection对象 在python中有以下几种方法可以连接到M ...

  2. python查询数据库返回数据

    python查询数据库返回数据主要运用到flask框架,pymysql 和 json‘插件’ #!/usr/bin/python # -*- coding: UTF-8 -*- import pymy ...

  3. [python] 查询mysql返回datetime类型数据的处理

    Python 查询Mysql,如果是datetime类型,在json序列化的时候会出现问题. 在网上查了一下,解决方案基本都是遍历dict数据,如果是datetime则转化为字符串. from dat ...

  4. python 基础 9.9 查询数据

      #/usr/bin/python #-*- coding:utf-8 -*- #@Time   :2017/11/24 4:21 #@Auther :liuzhenchuan #@File   : ...

  5. python连接 elasticsearch 查询数据,支持分页

    使用python连接es并执行最基本的查询 from elasticsearch import Elasticsearch es = Elasticsearch(["localhost:92 ...

  6. [ES]Python查询ES导出数据为Excel

    版本 elasticsearch==5.5.0 python==3.7 说明 用python查询es上存储的状态数据,将查询到的数据用pandas处理成excel code # -*- coding: ...

  7. python查询mysql数据(3)

    python查询mysql数据(3) """数据查询""" import pymysql import datetime from pymy ...

  8. python操作mongodb根据_id查询数据的实现方法

    python操作mongodb根据_id查询数据的实现方法   python操作mongodb根据_id查询数据的实现方法,实例分析了Python根据pymongo不同版本操作ObjectId的技巧, ...

  9. python自动化测试之mysql5.0版本数据库查询数据时出现乱码问题分析

    1.确保数据库编码是utf8编码.若不是,请将my.ini的client,mysql,mysqld三个字段下面添加default-character-set = utf8,这样可以永久改变在新建数据库 ...

随机推荐

  1. Java集合——LinkedHashMap源码详解

    个KV.LinkedHashMap不仅像HashMap那样对其进行基于哈希表和单链表的Entry数组+ next链表的存储方式,而且还结合了LinkedList的优点,为每个Entry节点增加了前驱和 ...

  2. 关于mysqldump备份非事务表的注意事项

      Preface       We're used to get a logical backup set(whole instance) by simply specifying "-- ...

  3. JFinal Template Engine 使用

    官方文档:JFinal Template Engine 文档

  4. Lua2

    1. 迭代器与Closure 在Lua中,迭代器通常为函数,每调用一次函数,即返回集合中的“下一个”元素.每个迭代器都需要在每次成功调用之间保持一些状态,这样才能知道它所在的位置和下一次遍历时的位置. ...

  5. STL之heap使用简介

    STL中并没有把heap作为一种容器组件,heap的实现亦需要更低一层的容器组件(诸如list,array,vector)作为其底层机制.Heap是一个类属算法,包含在algorithm头文件中.虽然 ...

  6. 201621123033 《Java程序设计》第2周学习总结

    1. 本周学习总结 ·学习了String类的特点,以及其与字符数组的关系等等. ·常量池的相关概念. ·包装类的特点. 2. 书面作业 1. String-使用Eclipse关联jdk源代码 1.1 ...

  7. Nginx和Squid配合搭建的Web服务器前端系统

    这个架构是目前我个人觉得比较稳妥并且最方便的架构,易于多数人接受: 前端的lvs和squid,按照安装方法,把epoll打开,配置文件照搬,基本上问题不多. 这个架构和app_squid架构的区别,也 ...

  8. 【距离GDOI:131天】 后缀数组完毕

    用了近两周的时间,终于把罗神那篇后缀数组应用看完了,题目也写了一遍,T了无数次...详见前几篇博文... 后缀数组很重要的是那个height数组,可以用来做各种奇奇怪怪的东西...常用方法去是去二分, ...

  9. C#实战Microsoft Messaging Queue(MSMQ)消息队列

    前言 在使用MSMQ之前,我们需要自行安装消息队列组件!(具体安装方法大家自己搜一下吧) 采用MSMQ带来的好处是:由于是异步通信,无论是发送方还是接收方都不用等待对方返回成功消息,就可以执行余下的代 ...

  10. ubuntu安装出现"删除initramfs-tools时出错",subprocess installed post-installation script returned error exit status 1

    昨日准备重装ubuntu,增大了系统容量,因为前面用到boot分区不到100M,于是这里分区如下 /boot 100M / 30G /home 50G 然后安装快结束时就出现如下图问题 开始以为是镜像 ...