2011-06-17 56 views
3

是否有MySQL的一种方法来实现获取COUNT()的SUM()

SELECT COUNT(SUM(field2)) FROM TABLE WHERE field1='value' GROUP BY field2 

返回一行所计数字段2.

字段1个& &字段2的总和都不是独一无二的。

如果需要更多信息,请让我知道。

编辑: 我没有想清楚。 我需要COUNT的COUNT。

所以从场2 这一切的计数值可以通过获取的行数来实现,但是我选择了这个:

SELECT COUNT(first_count) total_count FROM 
(SELECT COUNT(field2) as first_count FROM TABLE 
    WHERE field1='value' GROUP BY field2)t1 

还是有更快的查询?

干杯!

+3

`GROUPED BY`听起来不错,但它不是正确的:) – Teneff 2011-06-17 12:35:59

+3

SUM(域2)返回每场2 1倍的值,你能澄清你想要什么的计数? – 2011-06-17 12:36:01

回答

5

你更新

SELECT COUNT(first_count) total_count FROM 
( 
    SELECT COUNT(field2) as first_count FROM TABLE 
    WHERE field1='value' GROUP BY field2)t1 
) 

是计数的计数对于每个字段2,其与唯一字段2的计数相同;

SELECT COUNT(DISTINCT field2) FROM TABLE WHERE field1='value' 
5

我想你的意思:

SELECT field2 
    , field2 * COUNT(*) 
FROM TABLE 
WHERE field1 = 'value' 
GROUP BY field2 

另外:

没有GROUPED BY。有:GROUP BY


您的更新和澄清之后,我觉得你的查询显示是一样的:

SELECT COUNT(DISTINCT field2) AS total_count 
FROM TABLE 
WHERE field1 = 'value'