2016-04-05 8 views
0

Ich habe diese Daten in MySQL.Daten optimieren mit MySQL-Abfrage oder 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 | 

und ich möchte, anpassen und eine Daten json mit NodeJS/Express.js mit täglich, monatlich, jährlich Summe senden.

Zuerst versuche ich diese Abfrage.

Diese Abfrage läuft gut. aber das ist verschwenderisch denke ich. weil wiederholt die Anzahl der Codes abgefragt wird.

Ausgang:

+---------------------+-------+ 
|   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 | 
+---------------------+-------+ 

Kann ich alle Daten mit einer Abfrage erhalten?

Schließlich möchte ich diese Form der Daten mit expressjs senden.

[ 
    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}] 
] 

oder diese Form

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

ich habe versuchen mysql query, sequelize, lodash. aber ich kann nicht richtig finden.

+0

Was ist das Ergebnis des 'query'? – Rayon

+0

@RayonDabre Ergebnis ist '+ --------------------- + ------- + | Datum | Wert | + --------------------- + ------- + | 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

Antwort

0

Sie können eine Unterabfrage verwenden, um Ihr Datum zu formatieren, damit Sie es gruppieren können. Beispiel mit Tagessummen:

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 

Das Ergebnis:

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

Danke !! Es ist eine exakte Antwort auf meine Absicht !! – whitehander