2016-04-05 10 views
0

私はこれらのデータをmysqlに持っています。データはMySQLクエリまたはJavaScriptを使用して最適化されます

| code | date    | value | 
| A | 2016-04-04 00:00:00 | 0.1 | 
| B | 2016-04-04 00:00:02 | 0.5 | 
| C | 2016-04-04 00:00:05 | 1  | 
| A | 2016-04-04 00:11:00 | 0.2 | 
| B | 2016-04-04 00:12:25 | 0.6 | 
| C | 2016-04-04 00:15:30 | 0.4 | 

と私は調整し、毎日とnodejs/expressjs を使用してJSONにデータを送信し、毎月、毎年合計します。

まず、このクエリを試してみます。

SELECT date, value FROM 'table' 
WHERE code = 'A' 
    AND date >= '2016-04-05 00:00:00' 
GROUP BY DATE_FORMAT(date, "%y-%m-%d-%H") // or "%y-%m-%d", "%y-%m" 
ORDER BY date; 

このクエリは正常に実行されます。これは無駄だと思う。 コードの数を繰り返し照会するためです。

出力:

+---------------------+-------+ 
|   date  | value | 
+---------------------+-------+ 
| 2016-04-05 00:01:56 | 0 | 
| 2016-04-05 01:01:56 | 0 | 
| 2016-04-05 02:01:58 | 0 | 
| 2016-04-05 03:01:57 | 0 | 
| 2016-04-05 04:01:58 | 0 | 
| 2016-04-05 05:01:58 | 0 | 
| 2016-04-05 06:01:59 | 0 | 
| 2016-04-05 07:01:58 | 0 | 
| 2016-04-05 08:01:58 | 0 | 
| 2016-04-05 09:01:59 | 0 | 
| 2016-04-05 10:01:59 | 0.009 | 
| 2016-04-05 11:02:00 | 0.007 | 
+---------------------+-------+ 

は、私は1つのクエリですべてのデータを取得することはできますか?

最後に、この形式のデータをexpressjで送信します。

[ 
    A: [{ date: '2016-04-04 00:00:00', sum: 4}, 
     { date: '2016-04-04 00:01:00', sum: 6}], 

    B: [{ date: '2016-04-04 00:00:00', sum: 4}, 
     { date: '2016-04-04 00:01:00', sum: 6}] 
] 

またはこのフォーム

[ 
    { date: '2016-04-04 00:00:00', A: 4, B: 4 }, 
    { date: '2016-04-04 00:01:00', A: 4, B: 4 } 
] 

私は、mysqlのクエリ、sequelize、lodashを試してみました。 しかし、私は正しい方法を見つけることができません。

+0

'query'の結果は何ですか? – Rayon

+0

@RayonDabreの結果は '+ --------------------- + ------- + |日付|値| + --------------------- + ------- + | 2016-04-05 00:01:56 | 0 | | 2016-04-05 01:01:56 | 0 | | 2016-04-05 02:01:58 | 0 | | 2016-04-05 03:01:57 | 0 | | 2016-04-05 04:01:58 | 0 | | 2016-04-05 05:01:58 | 0 | | 2016-04-05 06:01:59 | 0 | | 2016-04-05 07:01:58 | 0 | | 2016-04-05 08:01:58 | 0 | | 2016-04-05 09:01:59 | 0 | | 2016-04-05 10:01:59 | 0.009 | | 2016-04-05 11:02:00 | 0.007 | + --------------------- + ------- + ' – whitehander

答えて

0

サブクエリを使用すると、グループ化できるように日付を書式設定できます。毎日合計で例:

SELECT code, date, sum(value) as value 
FROM (select code, DATE_FORMAT(date, "%y-%m-%d") as date, value from t1) as t2 
GROUP BY code, date 
ORDER BY date 

結果:

"A";"16-04-04";"0.30000000447034836" 
"B";"16-04-04";"1.100000023841858" 
"C";"16-04-04";"1.4000000059604645" 
+0

ありがとうございます!それは私の意図に対する正確な答えです! – whitehander

関連する問題