2014-10-10 78 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