首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL查询查找访问最多教室数量的两名教师

SQL查询查找访问最多教室数量的两名教师
EN

Stack Overflow用户
提问于 2019-11-20 03:21:33
回答 4查看 668关注 0票数 1

我是一个处理SQL查询的新手,所以我不知道如何创建一个精确的sql。

我尽了最大的努力,但我在网上找不到类似的例子,请在这里帮助我。

数据模式如下:

代码语言:javascript
复制
User(userID, username password, email, , userType)

Course(courseID, courseTitle)

Enroll(userID, courseID)

用户可以访问的课程教室;请注意,用户包括各种用户,如教师和管理员。

代码语言:javascript
复制
Material(materialID, materialText, teacherUserID, courseID)

问题:

找到两位能进入最多教室的老师。如果有一个平分,选择那些具有较小的用户ID。列出两位教师可以使用的用户ID、电子邮件和课程教室数。**

问题是:

  1. 选择userid,email,MIN (userid)我如何才能特别找到两个较小的用户ID,以及我应该选择哪个表来查找课程教室?在这种情况下,我是否必须使用
  2. ?因为enroll_table无法识别userID是教师还是管理员,如果使用enroll_table,是否可以找到i enroll_table的结果?我不知道如何具体地找到两位老师,并确保他们有领带休息,

  1. ,我是否也必须使用组和订餐?
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-11-20 04:33:05

刚刚看到了你的查询企图。查找如何格式化代码,因此它从文本中脱颖而出。但你开始的时候是对的。虽然我们没有完整的信息,但请尝试以下方法:

代码语言:javascript
复制
select user.userid,user.username, count(*) as cnt 
from enroll 
join user on user.userid=enroll.userid
where user.usertype="teacher"
group by user.userid
order by cnt DESC; 

所以玛丽教了三门课,走在前面。因为你只想要前两名,所以你可以添加行LIMIT 2来得到两位最多产的老师。

对于初学者来说最难理解的部分是group by子句,它生成聚合,并需要类似于第一行中的count(*)子句。分别读一读这篇文章,让自己成为一个更小的例子,这样你就能很好地理解这一点。

票数 1
EN

Stack Overflow用户

发布于 2019-11-20 04:51:29

kenken068还要求使用userid进行“领带中断”,所以"order“应该是

代码语言:javascript
复制
order by cnt DESC, userid ASC;
票数 1
EN

Stack Overflow用户

发布于 2019-11-20 05:06:22

代码语言:javascript
复制
Select teacheruserID, count(courseID) from material 
group by teacheruserID;

这将给你的课程数量,教师可以访问。

然后,只需借助order子句将其降序。和选择带有TOP 2关键字的TOP

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58946132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档