Php SQL-使用SUM计算一个组中有多少ITME

Php SQL-使用SUM计算一个组中有多少ITME,php,mysql,sql,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

我正在使用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
为此,请使用
count()
。如果与
groupby

SELECT Col1, SUM(Col2), count(*) as 'Times appeared'
FROM table 
WHERE Date > :FromDate AND Date < :EndDate 
GROUP BY Col1"
选择Col1、SUM(Col2)、count(*)作为“出现的次数”
从桌子上
其中日期>:FromDate和日期<:EndDate
按Col1分组”
为此使用
count()
。如果与
groupby

SELECT Col1, SUM(Col2), count(*) as 'Times appeared'
FROM table 
WHERE Date > :FromDate AND Date < :EndDate 
GROUP BY Col1"
选择Col1、SUM(Col2)、count(*)作为“出现的次数”
从桌子上
其中日期>:FromDate和日期<:EndDate
按Col1分组”
添加
计数(Col1)
作为查询中最后选择的内容。为什么这样不行

所以,我不知道为什么落选。。除非这是平台差异,但在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
添加
COUNT(Col1)
作为查询中最后选择的内容。为什么这样不行

所以,我不知道为什么落选。。除非这是平台差异,但在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

添加一个计数,如下所示:

SELECT Col1, SUM(Col2), COUNT(*)
FROM table 
WHERE Date > :FromDate 
  AND Date < :EndDate 
GROUP BY Col1
选择Col1、求和(Col2)、计数(*)
从桌子上
WHERE Date>:FromDate
和日期<:EndDate
Col1分组

添加一个计数,如下所示:

SELECT Col1, SUM(Col2), COUNT(*)
FROM table 
WHERE Date > :FromDate 
  AND Date < :EndDate 
GROUP BY Col1
选择Col1、求和(Col2)、计数(*)
从桌子上
WHERE Date>:FromDate
和日期<:EndDate
Col1分组

既然你先回答了,我就在这里发表评论<代码>日期介于:FromDate和:EndDate之间它是
日期>FromDate
而不是
日期>=FromDate
,并且在
之间不匹配,对吗?谢谢@juergend这帮了大忙。我也尝试在
之间使用
,但没有成功。什么也没有出现。不过没关系,我的主要问题已经解决了,因为你先回答了,我会在这里发表评论<代码>日期介于:FromDate和:EndDate之间
它是
日期>FromDate
而不是
日期>=FromDate
,并且在
之间不匹配,对吗?谢谢@juergend这帮了大忙。我也尝试在
之间使用
,但没有成功。什么也没有出现。不过没关系,我的主要问题是resolvedOP不想计算col1。OP想要计数重复项。我理解,但是计数col1将提供col1项的计数,其值与构成总和的值相同,与指定分组的计数*相同。。除非这是MySQL和SQL Server之间的区别谢谢,忘记了SQLFIDLE,应该发布一个。OP不想计算col1。OP想要计数重复项。我理解,但是计数col1将提供col1项的计数,其值与构成总和的值相同,与指定分组的计数*相同。。除非这是MySQL和SQL Server之间的区别谢谢,忘了SQLFIDLE,应该发布一个。