2016-04-08 3 views
1

Ich habe Daten wie so strukturiert:Verschachtelte Gruppen-By (SQL), Werte gruppiert Zurückhalten

date hour station  dem  imp 
2/1/2016  1 station1 dem1 6 
2/1/2016  2 station1 dem1 1 
2/1/2016  1 station1 dem2 0 
2/1/2016  2 station1 dem2 10 
2/2/2016  1 station1 dem1 6 
2/2/2016  2 station1 dem1 4 
2/2/2016  1 station1 dem2 5 
2/2/2016  2 station1 dem2 5 
2/1/2016  1 station 2 dem1 8 
2/1/2016  2 station 2 dem1 1 
2/1/2016  1 station 2 dem2 7 
2/1/2016  2 station 2 dem2 1 
2/2/2016  1 station 2 dem1 8 
2/2/2016  2 station 2 dem1 7 
2/2/2016  1 station 2 dem2 9 
2/2/2016  2 station 2 dem2 0 

Ich möchte für sie wie unten aussehen:

Imp, indem berechnet wird: die Summe von DM für jede Stunde, dann der Durchschnitt der Stunden für jeden Tag.

date   station imp 
2/1/2016  station1 8.5 
2/1/2016  station2 8.5 
2/2/2016  station1 10.0 
2/2/2016  station2 12.0 

z. Um 2/1/2016 und Station1 zu erhalten; imp = ((6 + 0) + (10 + 1))/2

Das Problem, das ich erlebt habe, ist, ich bin nicht sicher, wie die Stationswerte zu halten, wenn GROUP BY auf so etwas wie dem oder hour oder date tun .

Antwort

1

Sie können die Summe durch count(distinct dem) teilen, die die Anzahl der einzigartigen DEMs pro Tag/Stationspaar

select date, station, sum(imp)/count(distinct dem) 
from mytable 
group by date, station 

http://sqlfiddle.com/#!9/17001/1

+0

perfekt, dank hat! Wie kann ich als Anfänger erklären, wie die Gruppe mit zwei Spalten funktioniert? konzeptionell ist es schwer für mich zu visualisieren. Nimmt es im Prinzip jedes einzelne Datum/Stationspaar und dann die durchschnittliche Formel an, die du geschrieben hast? – mburke05

+0

@ mburke05 Ja das ist es im Grunde genommen, zählt das "count (distinct dem)" nur die eindeutige Anzahl an DMs in der Gruppe (2) im Gegensatz zu "count (dem)", was sie alle zählen würde (4) – FuzzyTree