抱歉,标题可能有点难懂。我在学校学习 MySQL,但现在我陷入了练习,无法在任何地方找到解决方案(尽管我 100% 确定它在那里,但我就是找不到)。
无论如何,我有一张表格,其中列出了一些名为精神病学、外科医生和皮肤科医生的医疗部门。外科医生和精神病学领域都有 2 名医生,而皮肤科医生只有 1 名。我应该知道医疗人员最多的地区的名称,就这么简单。我遇到的问题是我无法让两个区域都出现,只能显示其中一个区域或全部区域。这是我的代码:
select speciality, count(*)
from medics
group by speciality
order by count(*);
我也尝试过:
select max(total), speciality
from
(select speciality, count(*) as 'total' from medics
group by speciality
order by count(*))
as test
group by speciality;
编辑:这是我必须从中获取数据的表:
cod_hospital dni apellidos epecialidad
4 22233311 Martínez Molina, Gloria PSIQUIATRA
2 22233322 Tristán García, Ana CIRUJANO
2 22233333 Martínez Molina, AndrEs CIRUJANO
4 33222111 Mesa del Castillo, Juan DERMATOLOGO
1 66655544 Castillo Montes, Pedro PSIQUIATRA
这是预期的结果。 “1 - DERMATOLOGO”结果不应出现在那里,因为这不是大多数医生的专长:
max(total) especialidad
2 CIRUJANO
2 PSIQUIATRA
最佳答案
例如:
SELECT a.*
FROM
(SELECT especialidad,COUNT(*) total FROM medics GROUP BY especialidad) a
JOIN
(SELECT COUNT(*) total FROM medics GROUP BY especialidad ORDER BY total DESC LIMIT 1) b
ON b.total = a.total;
是的。有时真的会那么粗鲁。
关于mysql - 从不同行中检索最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35522720/