SQL - 使用SUM计算GROUP中有多少项

时间:2013-08-07 15:03:36

标签: php mysql sql

我正在使用PDO(仍在学习)并拥有当前的SQL查询。这非常有效,可以合并重复的条目并添加它们的值。有没有办法可以看到有多少重复的条目?

$SQL = "SELECT Col1, SUM(Col2) FROM table WHERE Date > :FromDate AND Date < :EndDate GROUP BY Col1";

我的表格看起来像这样

Col1     Col2 
-----  ------
ABC       2
ABA       3
ADD       1
AED       3
ABC       2
ABA       3
ADD       1
AED       3
AED       0

目前,在我循环之后,结果看起来像这样

Col1    Col2    
----    ----    
ABC       4
ABA       6
ADD       2
AED       6

但是我想知道它在分组之前在数据库中发生了多少次的值,这样我最终可以

Col1    Col2    Times Appeared
----    ----    --------------
ABC       4           2
ABA       6           2
ADD       2           2
AED       6           3

3 个答案:

答案 0 :(得分:2)

使用count()。如果与group by

一起使用,它仅计算组中的记录
SELECT Col1, SUM(Col2), count(*) as 'Times appeared'
FROM table 
WHERE Date > :FromDate AND Date < :EndDate 
GROUP BY Col1"

答案 1 :(得分:1)

添加COUNT,如下所示:

SELECT Col1, SUM(Col2), COUNT(*)
FROM table 
WHERE Date > :FromDate 
  AND Date < :EndDate 
GROUP BY Col1

答案 2 :(得分:0)

添加COUNT(Col1)作为查询中选择的最后一项内容。为什么那不起作用?

所以,我不知道为什么downvotes ..除非这是一个平台差异,但在SQL Server中以下代码是等价的

DECLARE @temptbl TABLE 
(
    textcol varchar(50),
    numcol int
)

INSERT INTO @temptbl (textcol,numcol) VALUES('test',4)
INSERT INTO @temptbl (textcol,numcol) VALUES('test',3)
INSERT INTO @temptbl (textcol,numcol) VALUES('test',2)
INSERT INTO @temptbl (textcol,numcol) VALUES('test2',1)
INSERT INTO @temptbl (textcol,numcol) VALUES('test2',3)

SELECT textcol,SUM(numcol),COUNT(numcol) FROM @temptbl GROUP BY textcol
SELECT textcol,SUM(numcol),COUNT(*) FROM @temptbl GROUP BY textcol