欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > leetcode-sql数据库面试题冲刺(高频SQL五十题)

leetcode-sql数据库面试题冲刺(高频SQL五十题)

2025/3/11 8:04:26 来源:https://blog.csdn.net/DZY_hungry/article/details/146165674  浏览:    关键词: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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词