MySQL MAX来自计数查询

时间:2014-10-10 22:22:22

标签: mysql sql

我有 table rozpis_riesitelov ,其中包含列:
     id_rozpisu_riesit,id_zam,id_projektu,id_ulohy。

我提出了查询:

select id_zam, id_ulohy, count(*) as counted 
from rozpis_riesitelov 
group by id_zam 
having id_ulohy in (1,2,8)

显示了我的员工ID(id_zam)以及他在项目中的次数(id_ulohy是无效的,但我不得不选择它having子句。它向我展示了数据库中的每个人,但我正在寻找ID为4的6个项目的员工(是的,我可以按顺序排序,但我希望看到最大值)。当我像这样做这个查询的最大值时:

select max(counted) 
from (select id_zam, id_ulohy, count(id_zam) as counted 
      from rozpis_riesitelov 
      group by id_zam 
      having id_ulohy in (1,2,8)) as riesitel

显示我的数字是149而不是6。

所以基本上我只需要找到大多数项目中出现的员工。

2 个答案:

答案 0 :(得分:1)

COUNT()值排序有什么问题,并限制为一个结果?

SELECT `id_zam`, 
       `id_ulohy`, 
       COUNT(*) AS `counted` 
FROM   `rozpis_riesitelov ` 
WHERE  `id_ulohy` IN ( 1, 2, 8 ) 
GROUP  BY `id_zam` 
ORDER  BY `counted` DESC 
LIMIT  1 

答案 1 :(得分:0)

不确定您要完成的是什么,但您只使用HAVING过滤您的聚合,如下所示:

HAVING COUNT(*) > 1

您应该能够将条件移动到WHERE子句并获得正确的最大返回值:

select max(counted) 
from (select id_zam, count(id_zam) as counted 
      from rozpis_riesitelov       
      where id_ulohy in (1,2,8)
group by id_zam) as riesitel