zoukankan      html  css  js  c++  java
  • LeetCode刷题(数据库)---- 超过5名学生的课

    题:请列出所有超过或等于5名学生的课。

    有一个courses 表 ,有: student (学生) 和 class (课程)。

    例如,表:

    +---------+------------+
    | student | class      |
    +---------+------------+
    | A       | Math       |
    | B       | English    |
    | C       | Math       |
    | D       | Biology    |
    | E       | Math       |
    | F       | Computer   |
    | G       | Math       |
    | H       | Math       |
    | I       | Math       |
    +---------+------------+
    

    应该输出:

    +---------+
    | class   |
    +---------+
    | Math    |
    +---------+
    

    Note:
    学生在每个课中不应被重复计算。

    分析:

    1、使用count()合计

    2、需要按课程分组Grout By

    3、条件过滤Having

    4、重复选同一门课程的学生不累计

    COUNT用法:

    COUNT(expr) 
    返回SELECT语句检索到的行中非NULL值的数目。   
    若找不到匹配的行,则COUNT() 返回 0 。 

    GROUP BY用法:

    SELECT column_name, aggregate_function(column_name)
    FROM table_name
    WHERE column_name operator value
    GROUP BY column_name

    结合合计函数:COUNT
    SUMAVGMAX,MIN 

    Having用法:

    SELECT column_name, aggregate_function(column_name)
    FROM table_name
    WHERE column_name operator value
    GROUP BY column_name
    HAVING aggregate_function(column_name) operator value

    1、一个HAVING子句。
    2、HAVING子句基本上是最后使用,只位于被发送给客户端的条目之前,没有进行优化。(必须位于GROUP BY子句之后,ORDER BY子句之前,LIMIT用于HAVING之后。)
    3、HAVING不能用于应被用于WHERE子句的条目
    4、HAVING子句可以引用总计函数,而WHERE子句不能引用

    解答:

    SELECT class 
    FROM courses 
    GROUP BY class
    HAVING count(distinct student)>=5;
  • 相关阅读:
    Git笔记
    排序学习LTR(1):排序算法的评价指标
    C++指针
    C++基础知识笔记
    Shell脚本--菜鸟教程笔记
    torch学习01-入门文档学习
    torch学习02-tensor学习
    torch学习0: 学习概览
    linux基础-用户创建及管理相关
    python-getattr() 函数 dir() 函数
  • 原文地址:https://www.cnblogs.com/zqunor/p/8635599.html
Copyright © 2011-2022 走看看