mysql数组选择和求和值

时间:2015-03-10 13:40:21

标签: mysql arrays

我拥有一个包含三个记录的数组:

value     datetime
2       03/03/2015 14:34:00
4       03/03/2015 14:36:00
5       03/03/2015 13:34:00

我想选择14时的记录并对它们求和。在上面的例子中将是4 + 2 = 6

我该怎么做?

$sql ="SELECT amperagem, data FROM tomada WHERE date(data) = DATE_SUB(CURDATE(), INTERVAL 1 DAY)";// 
mysql_select_db('localiza');
$retval = mysql_query( $sql, $conn );
$num_rows = mysql_num_rows($retval);
while($row = mysql_fetch_array($retval, MYSQL_BOTH)){    
$hour= substr(($row['data']),11, 2);

2 个答案:

答案 0 :(得分:0)

您实际上可以通过单个SQL查询获得价值:

请务必阅读http://www.w3schools.com/sql/func_datepart.asp

所以要获取日期时间包含14:XX:XX

的所有记录
SELECT value FROM tomada WHERE HOUR(data) = 14;

现在只需像你一样获取行并检索每行的“值”并将其添加

$res = mysql_query( $sql, $conn );
$returnObjects = array();
        if ($res == null) {
            return $returnObjects;      
        }       
        while(!is_null($row = mysql_fetch_row($res))){
            $returnObjects[] = $row;
        }
$returnArray = mysql_fetch_array($returnObjects);
$sum = 0;
for($row = 0, $size = count($returnArray); $row < $size; $row++){
        $sum += $returnArray[$row][0]; //Note 0 is the value you need
}
return $sum;

请注意,它可以用更少的代码行完成,步骤更少,但我发现这有助于阅读我正在做的事情。如果某些对象为NULL或值无效,还需要进行一些额外的检查。

答案 1 :(得分:0)

sql就像:

一样简单
  

从tomada中选择sum(value),其中hour(datetime)= 14;