Php SQL-使用SUM计算一个组中有多少ITME
我正在使用PDO(仍在学习)并拥有当前的SQL查询。这非常有效,可以合并重复条目并增加它们的价值。有没有办法让我知道有多少重复条目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
$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,应该发布一个。