zoukankan      html  css  js  c++  java
  • 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)
    
    
  • 相关阅读:
    Mac OS X各版本号的历史费用和升级关系
    Openlayers2中统计图的实现
    CentOS下Redisserver安装配置
    最小生成树算法
    机器学习---支持向量机(SVM)
    Android HttpURLConnection源代码分析
    Lighttpd1.4.20源代码分析 笔记 状态机之错误处理和连接关闭
    <html>
    【LeetCode-面试算法经典-Java实现】【059-Spiral Matrix II(螺旋矩阵II)】
    软件开发中的11个系统思维定律
  • 原文地址:https://www.cnblogs.com/lijunjiang2015/p/7887668.html
Copyright © 2011-2022 走看看