python 查询数据
查找课程不及格学生最多的前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 查询数据的更多相关文章
- 使用Connector / Python连接MySQL/查询数据
使用Connector / Python连接MySQL connect()构造函数创建到MySQL服务器的连接并返回一个 MySQLConnection对象 在python中有以下几种方法可以连接到M ...
- python查询数据库返回数据
python查询数据库返回数据主要运用到flask框架,pymysql 和 json‘插件’ #!/usr/bin/python # -*- coding: UTF-8 -*- import pymy ...
- [python] 查询mysql返回datetime类型数据的处理
Python 查询Mysql,如果是datetime类型,在json序列化的时候会出现问题. 在网上查了一下,解决方案基本都是遍历dict数据,如果是datetime则转化为字符串. from dat ...
- python 基础 9.9 查询数据
#/usr/bin/python #-*- coding:utf-8 -*- #@Time :2017/11/24 4:21 #@Auther :liuzhenchuan #@File : ...
- python连接 elasticsearch 查询数据,支持分页
使用python连接es并执行最基本的查询 from elasticsearch import Elasticsearch es = Elasticsearch(["localhost:92 ...
- [ES]Python查询ES导出数据为Excel
版本 elasticsearch==5.5.0 python==3.7 说明 用python查询es上存储的状态数据,将查询到的数据用pandas处理成excel code # -*- coding: ...
- python查询mysql数据(3)
python查询mysql数据(3) """数据查询""" import pymysql import datetime from pymy ...
- python操作mongodb根据_id查询数据的实现方法
python操作mongodb根据_id查询数据的实现方法 python操作mongodb根据_id查询数据的实现方法,实例分析了Python根据pymongo不同版本操作ObjectId的技巧, ...
- python自动化测试之mysql5.0版本数据库查询数据时出现乱码问题分析
1.确保数据库编码是utf8编码.若不是,请将my.ini的client,mysql,mysqld三个字段下面添加default-character-set = utf8,这样可以永久改变在新建数据库 ...
随机推荐
- Java集合——LinkedHashMap源码详解
个KV.LinkedHashMap不仅像HashMap那样对其进行基于哈希表和单链表的Entry数组+ next链表的存储方式,而且还结合了LinkedList的优点,为每个Entry节点增加了前驱和 ...
- 关于mysqldump备份非事务表的注意事项
Preface We're used to get a logical backup set(whole instance) by simply specifying "-- ...
- JFinal Template Engine 使用
官方文档:JFinal Template Engine 文档
- Lua2
1. 迭代器与Closure 在Lua中,迭代器通常为函数,每调用一次函数,即返回集合中的“下一个”元素.每个迭代器都需要在每次成功调用之间保持一些状态,这样才能知道它所在的位置和下一次遍历时的位置. ...
- STL之heap使用简介
STL中并没有把heap作为一种容器组件,heap的实现亦需要更低一层的容器组件(诸如list,array,vector)作为其底层机制.Heap是一个类属算法,包含在algorithm头文件中.虽然 ...
- 201621123033 《Java程序设计》第2周学习总结
1. 本周学习总结 ·学习了String类的特点,以及其与字符数组的关系等等. ·常量池的相关概念. ·包装类的特点. 2. 书面作业 1. String-使用Eclipse关联jdk源代码 1.1 ...
- Nginx和Squid配合搭建的Web服务器前端系统
这个架构是目前我个人觉得比较稳妥并且最方便的架构,易于多数人接受: 前端的lvs和squid,按照安装方法,把epoll打开,配置文件照搬,基本上问题不多. 这个架构和app_squid架构的区别,也 ...
- 【距离GDOI:131天】 后缀数组完毕
用了近两周的时间,终于把罗神那篇后缀数组应用看完了,题目也写了一遍,T了无数次...详见前几篇博文... 后缀数组很重要的是那个height数组,可以用来做各种奇奇怪怪的东西...常用方法去是去二分, ...
- C#实战Microsoft Messaging Queue(MSMQ)消息队列
前言 在使用MSMQ之前,我们需要自行安装消息队列组件!(具体安装方法大家自己搜一下吧) 采用MSMQ带来的好处是:由于是异步通信,无论是发送方还是接收方都不用等待对方返回成功消息,就可以执行余下的代 ...
- ubuntu安装出现"删除initramfs-tools时出错",subprocess installed post-installation script returned error exit status 1
昨日准备重装ubuntu,增大了系统容量,因为前面用到boot分区不到100M,于是这里分区如下 /boot 100M / 30G /home 50G 然后安装快结束时就出现如下图问题 开始以为是镜像 ...