2017-05-11 8 views
0

Ich möchte den monatlichen Durchschnitt pro Veranstaltungsort für eine Variable berechnen, die tägliche Daten hat. Meine Datumsvariable hat ein numerisches Format "YYYYMMDD". Meine Daten sieht wie folgt aus:SQL: Durchschnitt von Monat

date  venue metric 
20150203 1  0.78 
20150204 1  0.65 
20150205 1  0.90 
20150206 1  0.40 
20150203 2  0.74 
20150204 2  0.77 
20150205 2  0.88 
20150206 2  0.64 
20150203 3  0.78 
20150204 3  0.92 
20150205 3  0.94 
20150206 3  0.60 
+0

Welcher Datenbanktyp? – maSTAShuFu

+0

umwandeln Sie Ihr Datum von numerisch nach varchar (8) ... Datum Funktionen sollten in der Lage sein, Jahr Monat gut in meinem Fall zu identifizieren ... sonst gelten Kultur/Region – maSTAShuFu

+2

Speichern Sie Termine als die entsprechenden 'date' Typ, nicht Zahlen. – Donnie

Antwort

1

Sie sollten Termine als Daten nicht als Zahlen, unabhängig von der Datenbank zu speichern. Auf jeden Fall so etwas wie die folgenden sollten in jeder Datenbank arbeiten:

select floor(date/100) as yyyymm, venue, avg(metric) 
from t 
group by floor(date/100), venue; 
1

Angenommen, Sie verwenden PostgreSQL:

SELECT 
    month, 
    venue, 
    AVG(metric) 
FROM (
    SELECT 
     EXTRACT(MONTH FROM TO_DATE(CAST(your_date_field AS TEXT), 'YYYYMMDD')) AS month, venue, metric 
    FROM 
     your_table 
    ) AS sub 
GROUP BY 
    month, venue; 
1

starten:

SELECT SUBSTRING(DATE, 5,2) AS MONTH, VENUE, AVG (METRIC) 
FROM TABLENAME 
GROUP BY SUBSTRING(DATE, 5,2), VENUE 

Auch ich stimme mit allen hier auf Sie sollten Daten als Datumswert speichern.

+0

yeah Entschuldigung es ist als Datum gespeichert. Ich bin ziemlich neu in SQL. Wie auch immer, ich habe versucht "Jahr (Datum), Monat (Datum), metrische ......", aber einen Fehler: "FEHLER: Funktion Jahr (Datum) existiert nicht LINE 1: SELECT Jahr (Datum) als Jahr, Monat (Datum) als Monat, Markt_ID, ... ^ TIPP: Keine Funktion stimmt mit den angegebenen Namen und Argumenttypen überein Möglicherweise müssen explizite Typumwandlungen hinzugefügt werden ********** Fehler ********** " – duckman

+1

Schauen Sie sich http://StackOverflow.com/questions/36869703/extract-month-from-date-field an und sehen Sie, ob das Ihnen hilft, den Monat aus Ihrem Datumsfeld zu extrahieren. – SandPiper