leetcode-sql数据库口试题冲刺(高频SQL五十题)
标题: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。
思绪:
考虑到(subject_id, dept_id) 是该表的主键,且该标题标查询条件为“与每位老师在大学里教授的科目种类的数目”,与之相关的是科目种类,并非为系名,致使系名大概会有多个重复项。
以是使用GROUP BY语句,先根据老师的id将其分组,后使用DISTINCT关键词,去重subject_id。再用COUNT()函数盘算出列中的记录数即可。
代码:
SELECT teacher_id,COUNT(DISTINCT subject_id) AS cnt
FROM Teacher
GROUP BY teacher_id
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]