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,这样可以永久改变在新建数据库 ...
随机推荐
- Spring---单例模式(Singleton)的6种实现
1.1.1 摘要 在我们日常的工作中经常需要在应用程序中保持一个唯一的实例,如:IO处理,数据库操作等,由于这些对象都要占用重要的系统资源,所以我们必须限制这些实例的创建或始终使用一个公用的实例,这就 ...
- EVALUation mode running with code size limit:2k keil进行仿真过程中出现的报错
EVALUation mode running with code size limit:2k 如果keil软件未破解,会限制程序的存储大小.第一是你的软件没有破解,不能编译2K以上的程序:这种情况下 ...
- 1 Django初探
1.理解MTV request 向服务器请求 response发送数据给用户 M:数据库取出数据 T: 模板渲染 V:渲染好的网页返回给用户 URL找到特定的views 2.创建django项目 (1 ...
- 在ddms 里面查看data/data里面的东西 不显示data/data
今天我要查看data/anr/tarces.txt,没办法,我只有root手机. 可是root之后,我发现还是不能查看或者导出traces.txt. 后来我才知道,root之后,文件夹权限没有变,所以 ...
- Kafka写入流程和副本策略
Kafka写入流程: 1.producer 先从 zookeeper 的 "/brokers/.../state" 节点找到该 partition 的 leader 2. prod ...
- 把现有Unity3d游戏向Windows Phone 8.1移植(基础)
最近在将一款现有的游戏向Windows Phone平台移植,暂时完成了一个小阶段,做一个总结. 开发环境: Windows 8.1 系统及以上,愿意的话,用Windows 10 尝鲜也可以. 微软账号 ...
- Wordpress 后台文章编辑区添加模板选择功能
功能:后台编辑文章时,可以选择文章使用的模板,效果如下图: 操作步骤: <?php /** * Template Name: kbsingle full * Add by Ryan 3/18/2 ...
- 【视觉SLAM14讲】ch4心得与课后题答案【仅供参考】
答案: Q1:验证SO(3) SE(3) Sim(3)关于乘法成群 SO(3) : 由P64最开始可知,乘法代表了旋转,而SO(3)是旋转矩阵的集合, SE(3) Sim(3) 同理(最基础的部分 ...
- CentOS 6.3 下 vsftp搭建
环境:CentOS6.3 ftp的三种用户模式 匿名用户:vsftp默认开启匿名用户,但只允许下载不允许上传:匿名用户anonymous或ftp:匿名用户目录/var/ftp,但实际上vsftp对匿名 ...
- CodeForces Round #515 Div.3 C. Books Queries
http://codeforces.com/contest/1066/problem/C You have got a shelf and want to put some books on it. ...