我有一个只有三列的表,ID,DATETIME,VALUE
每个DATETIME来自不同时间段的各种样本。
我需要对每个值执行数学函数,例如。 (值* 60 * 10)/ 1000000 = new_value,然后按日期(日期时间)对new_value进行分组,并将每个日期的值相加,并为选择的ID组执行此操作。
我需要的结果是每个DATE,其总和值为这些米。
我试过了:
SELECT date(sub_meter_data.date) as date,
sum(CASE WHEN sub_meterID = '58984' OR '58985' OR '58986' OR '58987' THEN (((value*60)*10)/1000000) ELSE 0 END) as value
FROM `sub_meter_data` WHERE
date(sub_meter_data.date) > '2012-10-01'
GROUP BY date(sub_meter_data.date)
以下是一些示例数据:
sub_meterID date value
58984 2012-10-18 23:23:05.000 94.82643
58982 2012-10-18 23:28:52.000 97.43638
58984 2012-10-18 23:33:04.000 100.1923
58985 2012-10-18 23:43:01.000 97.93111
58984 2012-10-18 23:53:05.000 93.02759
58986 2012-10-19 00:03:03.000 88.29563
58984 2012-10-19 00:13:02.000 81.23074
58987 2012-10-19 00:23:07.000 86.37943
58984 2012-10-19 00:33:04.000 88.64834
答案 0 :(得分:1)
请尝试以下:
SELECT date(`date`),
sum(((value*60)*10)/1000000) as value
FROM `sub_meter_data`
where date(sub_meter_data.date) > '2012-10-01'
and sub_meterID in('58984','58985','58986','58987')
group by date(`date`);