如何使用mySQL编写查询“显示其中包含最多/最少员工的组”?

qgelzfjb  于 2023-03-22  发布在  Mysql
关注(0)|答案(2)|浏览(122)

所以我不记得如何准确地显示所有包含MAX/MIN ppl的组。假设有一个表,其中包含Id、name、role(employee,employer)、groupName(a1,b2,c3...)列,我需要列出每个组中雇员的MAX/MIN数量。

SELECT `groupName`, COUNT(*)
 FROM Table1
 WHERE ROLE = 'employee'
 GROUP BY `groupName`
ORDER BY COUNT(*) DESC;

我需要找到每个组中的最大/最小员工数,并且有很多组。但我想我真正想知道的是,您如何只选择最大计数和最小计数。假设在组1a中有200名员工,而在2b,3c中只有一名员工。当然还有其他组,但它们介于两者之间,我需要在我的报告中只选择最大和最小。

i34xakig

i34xakig1#

如果要每个组的计数,可以执行以下操作:

SELECT groupName, COUNT(id) AS employee_count
FROM table1
WHERE role = 'employee'
GROUP BY groupName
ORDER BY employee_count DESC;

MIN/MAX只有在实际查找数值列(或日期等)的最小值和最大值时才有意义。如果您想计算每个组的员工数,可以使用COUNT
如果您需要显示所有组中计数最大(或最小)的组,这是一个稍微不同的问题。

mxg2im7a

mxg2im7a2#

如果你真的想找到每个组的最大员工数,那么这个问题就没有意义了,因为每个组都有一个单一的员工数(例如,group 1有6名员工,group 2有3名员工,等等)。所以,在这个答案中,我假设你想要每个组的最小员工数和最大员工数。
如果你想得到每个组中的最小/最大员工人数,那么你可以通过下面的方法来实现:

SELECT `groupName`, COUNT(*), MIN(Id), MAX(Id)
 FROM Table1
 WHERE ROLE = 'employee'
 GROUP BY `groupName`
ORDER BY COUNT(*) DESC;

相关问题