0

ID、DATETIME、VALUEの3つの列だけのテーブルがあります

各DATETIMEは、さまざまなメーターからの、日中のさまざまなサンプルからのものです。

たとえば、各値に対して数学関数を実行する必要があります。(value * 60 * 10)/ 100000 = new_value次に、new_valueをDATE(datetime)でグループ化し、各日付の値を合計して、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
4

1 に答える 1

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`);
于 2012-10-19T03:30:00.520 に答える