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,这样可以永久改变在新建数据库 ...
随机推荐
- zeppelin的数据集的优化
前面我们介绍了zeppelin的修改,前面由于自己的原因,对zeppelin的修改过于多,现在由于优化了,我们两个类, 一个是zeppelin-server的NotebookServer的类的broa ...
- TouTiao开源项目 分析笔记2
1.Constant常量定义类 1.1.源代码 public class Constant { public static final String USER_AGENT_MOBILE = " ...
- Dragger 2遇到的坑 Dragger2详解 Dragger2学习最好的资料
我是曹新雨,我为自己代言.现在的菜鸟,3年以后我就是大神.为自己加油.微信:aycaoxinyu Dragger2是什么,我就不再说了.资料一堆,而且里面的注解什么意思,我推荐两篇文章,这两篇都是我精 ...
- Kafka安装和常用操作命令
Kafka安装: 下载kafka_2.10-0.8.2.1 1.关闭防火墙 2.修改配置文件 server.properties broker.id=1log.dirs= /usr/kafka_2. ...
- 以最省内存的方式把大图片加载到内存及获取Exif信息和获取屏幕高度和宽度的新方法
我们在加载图片时经常会遇到内存溢出的问题,图片太大,我们加载图片时,一般都是用的如下一般方法(加载本地图片): /** * 不作处理,去加载图片的方法,碰到比较大的图片会内存溢出 */ private ...
- Git从入门到熟练
Git的特性 1. 分布式版本控制 集中式VS分布式 保存更新时的文件快照而非差异 (快照 :是文件系统中的概念或者技术:来自照相领域的概念,是指特定时间点的一个状态) 其他系统在每个版本中记录着各个 ...
- USACO Section1.2 Milking Cows 解题报告
milk2解题报告 —— icedream61 博客园(转载请注明出处)---------------------------------------------------------------- ...
- 去除文件夹中的.svn
一.在Dos窗口中运行如下命令 for/r <你项目的路径> %i in (.svn) do rd /s /q %i 二.将“Delete SVN Folders”操作添加到右击菜单中 建 ...
- python-使用unittest和ddt实现数据驱动
一.数据驱动的概念 相同测测试脚本使用不同的测试数据来执行,测试数据和测试行为完全分离,这样的测试脚本设计模式成为数据驱动.测试框架使用unittest 和ddt模块相结合的方式 二.unittest ...
- How to solve SyntaxError on autogenerated manage.py?
错误原因: 今天尝试使用pycharm中的Django. 使用的是基于python3.5的Django2.0.5. 按照官网教程https://docs.djangoproject.com/en/2. ...