2012-08-03 59 views
1

我有以下查询后总查询号码:MySQL的:获得分组和计数

select count(*) c , id 
from hr 
where time >= '2011-11-8 00:00:00' and 
     time <= '2011-12-9 23:59:59' 
group by id 
having c>3; 

结果列表中可能是非常巨大的(高达10,000项目的某个时候),我不想列出所有因为我只想得到总数。除了“select found_rows()”,我试图找到一个sql语句来完成工作而不打印列表。 (我不使用Perl,PHP或任何其他API,只是SQL)

任何想法?

在此先感谢。

+0

就这个问题和回答我需要!甜。 – 2013-03-08 22:45:38

回答

1

把它包在一个子查询并再次对记录

SELECT COUNT(*) totalCount 
FROM 
(
    select count(*) c , id 
    from hr 
    where time >= '2011-11-8 00:00:00' and 
      time <= '2011-12-9 23:59:59' 
    group by id 
    having COUNT(*) > 3 
) x 
+0

你说得对。我用子选择,但我不知道“x”是需要的。再次感谢。 – Yang 2012-08-03 00:32:39

+0

'x'是这个derieved table的别名:-) – Ambrose 2012-08-03 00:33:37

0
SELECT COUNT(*) FROM (SELECT id, COUNT(*) c FROM hr WHERE time >= '2011-11-8 00:00:00' AND time <= '2011-12-9 23:59:59' GROUP BY id) counts WHERE counts.c > 3;