我试图从一个表中获取日志数据。在这里我选择一个时间段(“maandag”到“vrijdag”)。这得到了我想要的结果,但是现在我得到的问题是每天只显示3个测量值。
第一个是8点后的第一个
第二个是14点后的第一个
第三个是20点后的第一个
我的问题是测量时间不是恒定的。所以使用regexp来选择一天中的一部分是行不通的。
通过下面的查询,我有时每天也会得到2到4个甚至更多的结果。这是因为基本上,两次测量之间的时间是2小时,但这不是恒定的,也不是说第二天的测量是在同一时间进行的。
一天中有一部分时间可以分组吗?
或者还有什么别的解决办法?
data:
id datumTijd ph tbc temperatuur vbc gbc
1 2012-10-03 14:59:19 7.30.08 24.91 0.02 0
1 2012-10-03 16:47:38 7.33.07 22.15 0.12 0
3 2012-10-03 17:03:06 7.31.09 23.23 0.05 0
query:
SELECT N.name, D.datumTijd, ROUND(D.gbc,2), ROUND(D.vbc,2), ROUND(D.tbc,2),ROUND(D.ph,2), ROUND(D.temperatuur,1)
FROM METING.Name N, METING.Data D
Where D.datumTijd BETWEEN "'+maandag+' 00:00:00" AND "'+vrijdag+' 23:59:59"
AND N.id = D.id AND D.datumTijd
AND D.datumTijd REGEXP "0[78]:..:..|1[34]:..:..|2[12]:..:.."';
ORDER BY N.name, D.datumTijd
最佳答案
你可以这样做,把结果分成3个不同的时期。然后可以对度量值使用聚合函数(sum、min、max)。
SELECT DATE(D.datumTijd),
CASE WHEN TIME(D.datumTijd) BETWEEN '08:00:00' AND '14:00:00' THEN 1
WHEN TIME(D.datumTijd) BETWEEN '14:00:00' AND '20:00:00' THEN 2
WHEN TIME(D.datumTijd) BETWEEN '20:00:00' AND '24:00:00' THEN 3
END as period
...
GROUP BY DATE(D.datumTijd),
CASE WHEN TIME(D.datumTijd) BETWEEN '08:00:00' AND '14:00:00' THEN 1
WHEN TIME(D.datumTijd) BETWEEN '14:00:00' AND '20:00:00' THEN 2
WHEN TIME(D.datumTijd) BETWEEN '20:00:00' AND '24:00:00' THEN 3
END
关于mysql - 早上下午和晚上的mysql组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13806187/