python进行数据查询_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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值