首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一个部门的最大医生人数

一个部门的最大医生人数
EN

Stack Overflow用户
提问于 2014-01-21 18:31:19
回答 3查看 263关注 0票数 1

我的问题是:

我有一张桌子叫

代码语言:javascript
复制
Doctor(id, name, department)  

另一张表名为

代码语言:javascript
复制
department(id, name).

医生与一个部门有关联(只有一个部门,而不是更多的部门)

我必须做一个查询,返回该部门与之相关的最大医生数。

我不知道该如何进行,我觉得我需要使用嵌套查询,但我刚刚开始,我在这方面做得很差。我认为应该是这样的,但是我也不太确定,我也不知道在嵌套的查询中应该放什么:

代码语言:javascript
复制
SELECT department.id  
FROM (SELECT FROM WHERE) , department d, doctor doc  
WHERE doc.id = d.id
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-01-21 18:37:44

SQL中常见的解决“使用最大数量的XYZ查找ABC”问题的方法如下:

  • 查询包含每个ABC的XYZ计数的ABC列表
  • 根据XYZ的计数按降序顺序排列列表
  • 将结果限制为单个项;这将是您需要的最高项。

在您的例子中,您可以这样做(我假设MySQL语法用于取上一行):

代码语言:javascript
复制
SELECT *
FROM department dp
ORDER BY (SELECT COUNT(*) FROM doctor d WHERE d.department_id=dp.id) DESC
LIMIT 1
票数 3
EN

Stack Overflow用户

发布于 2014-01-21 18:36:55

您可以使用Group BY

代码语言:javascript
复制
Select top (1) department.id,count(Doctor.*) as numberofDocs
from department inner join Doctor on  Doctor.id = department.id
Group by department.id
Order by count(Doctor.*) desc
票数 3
EN

Stack Overflow用户

发布于 2014-01-21 19:08:12

我通常避免在MySQL中使用子查询,因为在MySQL中有一个众所周知的错误。由于错误,MySQL对每个外部查询结果执行内部查询。因此,如果您有10个部门,那么医生的查询将执行10次。该错误可能在MySQL 5.6中得到了修复。在这种情况下,部门的数量可能不多,因此性能可能不是您主要关心的问题。但是,下面的解决方案应该适用于MySQL并进行更多的优化。百叶窗灯的回答几乎是一样的,就在我前面:)。但是MySQL不支持命令顶部。

代码语言:javascript
复制
select dep.id, dep.name, count(doc.id) as dep_group_count from Doctor doc join department dep on doc.department = dep.id group by doc.department order by dep_group_count DESC LIMIT 1
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21266324

复制
相关文章

相似问题

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