详解力扣高频SQL50题之2356. 每位教师所教授的科目种类的数量【简单】

传送门:2356. 每位教师所教授的科目种类的数量

题目

表: Teacher

±------------±-----+
| Column Name | Type |
±------------±-----+
| teacher_id | int |
| subject_id | int |
| dept_id | int |
±------------±-----+
在 SQL 中,(subject_id, dept_id) 是该表的主键。
该表中的每一行都表示带有 teacher_id 的教师在系 dept_id 中教授科目 subject_id。

查询每位老师在大学里教授的科目种类的数量。

以 任意顺序 返回结果表。

查询结果格式示例如下。

示例 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。

解析

分组就不用说了,关键是组内不重复个数,用distinct+count()即可,这要是没distinct妥妥的入门级。

算法(标准SQL)

查询老师表,对老师id分组,用count()+distinct统计组内不重复个数cnt,返回老师id和cnt。

代码(标准SQL)

select teacher_id,
count(distinct subject_id) as cnt
from Teacher
group by teacher_id;

你可能感兴趣的:(详解力扣高频SQL50题之2356. 每位教师所教授的科目种类的数量【简单】)