SQL查询总和不起作用

时间:2018-07-09 07:26:40

标签: sql

我想为这个SUM提出建议,但该建议无法正常工作。 我必须汇总当天的数据并将其显示在表格中。 我做了这样的查询:

SELECT * FROM giorni WHERE punto = '$punto' && STR_TO_DATE(giorno, '%d/%m/%Y') BETWEEN   STR_TO_DATE('" . $d1 . "', '%d/%m/%Y') AND STR_TO_DATE('" . $d2 . "', '%d/%m/%Y') ORDER BY data";

这是“简单”的一行,它显示每一行,我必须在其中放一个SUM以使其每天显示,但要对同一天的数据求和。

这2行必须显示为一: enter image description here

有人可以帮我创建此查询吗?

3 个答案:

答案 0 :(得分:2)

SUM是一个聚合函数。它将计算每个组的总数。 +用于计算一行中的两列或更多列。

示例:

ID  VALUE1  VALUE2
===================
 1   1       2
 1   2       2
 2   3       4
 2   4       5

所以下面的查询:

SELECT  ID, VALUE1 + VALUE2
FROM    TableName

将导致:

ID, VALUE1 + VALUE2
1   3
1   4
2   7
2   9

但是此查询:

SELECT  ID, SUM(VALUE1 + VALUE2)
FROM    tableName
GROUP   BY ID

将导致:

ID, SUM(VALUE1 + VALUE2)
1   7
2   16

答案 1 :(得分:1)

如果我理解正确,可以尝试一下。

您不能在SUM函数中添加多参数。

使用聚合函数时,您需要在GROUP BY游标中添加非聚合列。

 SELECT data,giorno,SUM(a1) as a1, SUM(a2) as a2, SUM(a3) as a3 , SUM(a4) as a4 
 FROM giorni 
 WHERE punto = '$punto' && STR_TO_DATE(giorno, '%d/%m/%Y') 
 BETWEEN STR_TO_DATE('" . $d1 . "', '%d/%m/%Y') AND STR_TO_DATE('" . $d2 . "', '%d/%m/%Y') 
 GROUP BY data,giorno
 ORDER BY data";

答案 2 :(得分:0)

尝试一下

SELECT data,giorno,SUM(a1),SUM(a2),SUM(a3),SUM(a4)
FROM giorni
WHERE punto = '$punto' && STR_TO_DATE(giorno, '%d/%m/%Y') BETWEEN STR_TO_DATE('" . $d1 . "', '%d/%m/%Y') AND STR_TO_DATE('" . $d2 . "', '%d/%m/%Y')
GROUP BY data
ORDER BY data

此代码假设您没有组合这四个字段。将SUM放入您要求和的字段中。