列表

详情


596. 超过5名学生的课

表: Courses

+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| student     | varchar |
| class       | varchar |
+-------------+---------+
(student, class)是该表的主键列。
该表的每一行表示学生的名字和他们注册的班级。

 

编写一个SQL查询来报告 至少有5个学生 的所有班级。

任意顺序 返回结果表。

查询结果格式如下所示。

 

示例 1:

输入: 
Courses table:
+---------+----------+
| student | class    |
+---------+----------+
| A       | Math     |
| B       | English  |
| C       | Math     |
| D       | Biology  |
| E       | Math     |
| F       | Computer |
| G       | Math     |
| H       | Math     |
| I       | Math     |
+---------+----------+
输出: 
+---------+ 
| class   | 
+---------+ 
| Math    | 
+---------+
解释: 
-数学课有6个学生,所以我们包括它。
-英语课有1名学生,所以我们不包括它。
-生物课有1名学生,所以我们不包括它。
-计算机课有1个学生,所以我们不包括它。

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
# Write your MySQL query statement below

pythondata 解法, 执行用时: 300 ms, 内存消耗: 60.8 MB, 提交时间: 2023-08-09 17:28:41

import pandas as pd

def find_classes(courses: pd.DataFrame) -> pd.DataFrame:
    df = courses.groupby('class').size().reset_index(name='count')

    df = df[df['count'] >= 5]

    return df[['class']]

pythondata 解法, 执行用时: 284 ms, 内存消耗: 60.9 MB, 提交时间: 2023-08-09 17:28:16

import pandas as pd

def find_classes(courses: pd.DataFrame) -> pd.DataFrame:
    # 使用 groupby 和 count 函数对班级进行分组计数
    class_counts = courses.groupby('class')['student'].count().reset_index()
    
    # 筛选出学生数量大于等于5的班级
    result = class_counts[class_counts['student'] >= 5]
    
    return result[['class']]

mysql 解法, 执行用时: 2105 ms, 内存消耗: N/A, 提交时间: 2018-08-22 11:35:11

# Write your MySQL query statement below
SELECT class from courses group by class having count(DISTINCT student) >= 5

上一题