• Mysql_项目3:查询出超过或等于5名学生的课程(难度:简单)


    项目3:查询出超过5名学生的课程(难度:简单)

    创建如下所示的courses 表 ,有: student (学生) 和 class (课程)。

    例如,表:

    +---------+------------+

    | student | class      |

    +---------+------------+‘’

    | A       | Math       |

    | B      | English    |

    | C       | Math       |

    | D       | Biology    |

    | E       | Math       |

    | F       | Computer   |

    | G       | Math       |

    | H       | Math       |

    | I       | Math       |

    | A      | Math       |

    +---------+------------+

     

    ---- 创建表

    CREATE TABLE courses (
    student varchar(50) NOT NULL,
    class varchar(50) NOT NULL);

    --插入数据

    INSERT INTO `courses` VALUES ('A', 'Math');
    INSERT INTO `courses` VALUES ('B', 'English');
    INSERT INTO `courses` VALUES ('C', 'Math');
    INSERT INTO `courses` VALUES ('D', 'Biology');
    INSERT INTO `courses` VALUES ('E', 'Math');
    INSERT INTO `courses` VALUES ('F', 'Computer');
    INSERT INTO `courses` VALUES ('G', 'Math');
    INSERT INTO `courses` VALUES ('H', 'Math');
    INSERT INTO `courses` VALUES ('I', 'Math');
    INSERT INTO `courses` VALUES ('A', 'Math');

    编写一个 SQL 查询,列出所有超过或等于5名学生的课。

    应该输出:

    +---------+

    | class   |

    +---------+

    | Math    |

    +---------+

    注意点:学生在每个课中不应被重复计算(在本案例里student字段有相关的,要注意剔除相同学生后再算课程被选的次数)

    方法1:用子查询

    SELECT t.class
    FROM (SELECT DISTINCT * FROM courses) t
    GROUP BY t.class
    HAVING count(t.class)>=5

    方法2:用distinct 对学生字段去重后再计算

    SELECT class
    FROM courses
    GROUP BY class
    HAVING count(DISTINCT student)>=5

     

  • 相关阅读:
    win10 系统下myeclipse 下启动 tomcat7 所遇到的问题
    搭建个人博客&论坛(LAMP):wordpress、discuz、phpMyAdmin
    拟合优度检验和独立性检验
    作业day19
    numpy
    正则模块
    模块功能
    模块
    匿名函数、异常处理
    递归和迭代器
  • 原文地址:https://www.cnblogs.com/wodexk/p/10657273.html
Copyright © 2020-2023  润新知