# Write your MySQL query statement below
2356. 每位教师所教授的科目种类的数量
表: Teacher
+-------------+------+ | Column Name | Type | +-------------+------+ | teacher_id | int | | subject_id | int | | dept_id | int | +-------------+------+ (subject_id, dept_id) 是该表的主键。 该表中的每一行都表示带有 teacher_id 的教师在系 dept_id 中教授科目 subject_id。
写一个 SQL 来查询每位老师在大学里教授的科目种类的数量。
以 任意顺序 返回结果表。
查询结果格式示例如下。
示例 1:
输入: Teacher 表: +------------+------------+---------+ | teacher_id | subject_id | dept_id | +------------+------------+---------+ | 1 | 2 | 3 | | 1 | 2 | 4 | | 1 | 3 | 3 | | 2 | 1 | 1 | | 2 | 2 | 1 | | 2 | 3 | 1 | | 2 | 4 | 1 | +------------+------------+---------+ 输出: +------------+-----+ | teacher_id | cnt | +------------+-----+ | 1 | 2 | | 2 | 4 | +------------+-----+ 解释: 教师 1: - 他在 3、4 系教科目 2。 - 他在 3 系教科目 3。 教师 2: - 他在 1 系教科目 1。 - 他在 1 系教科目 2。 - 他在 1 系教科目 3。 - 他在 1 系教科目 4。
原站题解
mysql 解法, 执行用时: 377 ms, 内存消耗: 0 B, 提交时间: 2023-04-02 11:21:54
# Write your MySQL query statement below select teacher_id,count(distinct subject_id) as cnt from teacher group by 1;
mysql 解法, 执行用时: 386 ms, 内存消耗: 0 B, 提交时间: 2023-04-02 11:21:20
# Write your MySQL query statement below select teacher_id, count(distinct subject_id) cnt from Teacher group by teacher_id;
pythondata 解法, 执行用时: 296 ms, 内存消耗: 60.8 MB, 提交时间: 2023-08-09 14:42:54
import pandas as pd def count_unique_subjects(teacher: pd.DataFrame) -> pd.DataFrame: unique_subjects = teacher.groupby('teacher_id')['subject_id'].nunique().reset_index() unique_subjects = unique_subjects.rename(columns={'subject_id': 'cnt'}) return unique_subjects
pythondata 解法, 执行用时: 292 ms, 内存消耗: 59.9 MB, 提交时间: 2023-08-09 14:44:21
import pandas as pd def count_unique_subjects(teacher: pd.DataFrame) -> pd.DataFrame: df = teacher.groupby(["teacher_id"])["subject_id"].nunique().reset_index() df = df.rename({'subject_id': "cnt"}, axis=1) return df