2014-10-10 49 views
0

表rozpis_riesitelov其中包含列:
id_rozpisu_riesit,id_zam,id_projektu,id_ulohy。MySQL的MAX从数查询

我做了查询:

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

这说明我的员工(id_zam)多少次他是在项目的ID(id_ulohy是irrevelant但我不得不选择它怎么一回事,因为的having条款)。它向我展示了db中的每个人,但我正在寻找身份证号为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

所以基本上我只需要找到一个发生在大部分项目的员工。

回答

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 
+0

谢谢,没有关于此事。限制结果是我正在寻找的答案。 – 2014-10-12 18:45:46

0

不知道你想什么来完成,但你只能使用具有对您汇总筛选是这样的:

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