Mysql 基于时差添加行的sql查询
我有一个表,有以下列:s.no,house_no,energy,time 我想找出每一间房子每一小时的总能量。 表: 我尝试的是上午10点到11点。但是这个查询也会对时间值大于上午11点的行的能量求和Mysql 基于时差添加行的sql查询,mysql,datetime,time,Mysql,Datetime,Time,我有一个表,有以下列:s.no,house_no,energy,time 我想找出每一间房子每一小时的总能量。 表: 我尝试的是上午10点到11点。但是这个查询也会对时间值大于上午11点的行的能量求和 SELECT house_no, sum( energy ) AS sum, time FROM main GROUP BY house_no HAVING ( TIMESTAMPDIFF( MINUTE , time, '2014-10-20 11:00:00' ) >0) 结果是: +
SELECT house_no, sum( energy ) AS sum, time
FROM main
GROUP BY house_no
HAVING (
TIMESTAMPDIFF(
MINUTE , time, '2014-10-20 11:00:00' ) >0)
结果是:
+----------+------+---------------------+
| house_no | sum | time |
+----------+------+---------------------+
| 1 | 18 | 2014-10-20 10:00:00 |
| 2 | 27 | 2014-10-20 10:00:00 |
+----------+------+---------------------+
但实际答案应该是:
+----------+------+---------------------+
| house_no | sum | time |
+----------+------+---------------------+
| 1 | 15 | 2014-10-20 10:00:00 |
| 2 | 7 | 2014-10-20 10:00:00 |
+----------+------+---------------------+
您还必须根据小时对时间进行分组
SELECT house_no, sum( energy ) AS sum, time
FROM main
GROUP BY house_no,DATE_FORMAT(time,'%d %b %Y %H')
HAVING (
TIMESTAMPDIFF(
MINUTE , time, '2014-10-20 11:00:00' ) >0)
是的,它是有效的。使用where子句而不是HAVE子句本身解决了这个问题。
SELECT house_no, sum( energy ) AS sum, time
FROM main
GROUP BY house_no,DATE_FORMAT(time,'%d %b %Y %H')
HAVING (
TIMESTAMPDIFF(
MINUTE , time, '2014-10-20 11:00:00' ) >0)