目录
一,原题力扣链接
二,题干
表:
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。
三,建表语句
Create table If Not Exists Teacher (teacher_id int, subject_id int, dept_id int)
Truncate table Teacher
insert into Teacher (teacher_id, subject_id, dept_id) values ('1', '2', '3')
insert into Teacher (teacher_id, subject_id, dept_id) values ('1', '2', '4')
insert into Teacher (teacher_id, subject_id, dept_id) values ('1', '3', '3')
insert into Teacher (teacher_id, subject_id, dept_id) values ('2', '1', '1')
insert into Teacher (teacher_id, subject_id, dept_id) values ('2', '2', '1')
insert into Teacher (teacher_id, subject_id, dept_id) values ('2', '3', '1')
insert into Teacher (teacher_id, subject_id, dept_id) values ('2', '4', '1')
四,分析
题解: 教师表 教师id 科目id 部门id 查询每一个老师 再大学里面的科目数量的总数每个老师 教授科目的总数
以老师分组 科目去重 然后拿到不同科目的数量 count统计一下
五,SQL解答
select teacher_id,count(distinct subject_id) cnt
from teacher group by teacher_id
六,验证
七,知识点总结
简单查询
分组求聚合 count的用法
count 里面可以加上distinct去重 拿到准确的数目