zoukankan      html  css  js  c++  java
  • 【lc-database】596.超过5名学生的课

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

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

    例如,表:

    ±--------±-----------+

    | student | class |

    ±--------±-----------+

    | A | Math |

    | B | English |

    | C | Math |

    | D | Biology |

    | E | Math |

    | F | Computer |

    | G | Math |

    | H | Math |

    | I | Math |

    ±--------±-----------+

    应该输出:

    ±--------+

    | class |

    ±--------+

    | Math |

    ±--------+

    Note:

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

    1.groud by 和 having

    select class from courses  GROUP BY class having count(DISTINCT student) >=5;
    

    思路: 计算超过5名学生的课程,因此需要使用分组groud by 分组后 就可以统计了 但是where是在groud by之前进行行级别的过滤 而having是在组级别上进行过滤,因此就可以确定使用 groud by+having组合来解决 去重的化 我想了很久还是不会,看了下答案 答案上是这么写的 count()函数里进行去重 这里重点标记一下。

    2.ground by +子查询

    SELECT
        class
    FROM
        (SELECT
            class, COUNT(DISTINCT student) AS num
        FROM
            courses
        GROUP BY class) AS temp_table
    WHERE
        num >= 5
    ;
    

    思路:前提是需要进行分组操作,所以select class ,count(distinct student) from courses group by class 可以查到分组之后的信息了 ,将查询的表 当作一个临时表来进行操作。

  • 相关阅读:
    JS-函数
    JS-数组
    JS-2
    课堂小技巧
    CSS利用filter/opacity实现背景透明
    [技巧心得] 背景半透明最佳实践
    Cadence Orcad 无法启动出现Capture.exe找不到cdn_sfl401as.dll问题
    正则表达式
    python小项目之头像右上角加数字
    Django开发之路 二(django的models表查询)
  • 原文地址:https://www.cnblogs.com/qxlxi/p/12860763.html
Copyright © 2011-2022 走看看