2016-04-08 17 views
1
gruplandırılmış tutulmasına

Veri şöyle oluşturduk:İçiçe Grubu-By (SQL), değerler

aşağıda benzemeye için İsterdim
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 

:

İth hesaplanır alarak: Her saat için dems toplamı, sonra her gün için saatlerin ortalaması. YıLıSıTıııııııııııııııııııııııııııııııı. 2/1/2016 ve station1 almak için; imp = ((6 + 0) + (10 + 1)) ben yaşıyorum Sorun dem veya hour veya date gibi bir fırsatı GROUP BY yaparken istasyon değerlerini korumak için nasıl emin değilim/2

.

cevap

1

tarihe başına eşsiz dem yılların # sahiptir count(distinct dem) tarafından toplamı,/istasyon çifti

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

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

+0

mükemmel bölebilirsiniz, teşekkürler! Ben yeni başlayan biri olarak, iki sütun ile grubun nasıl çalıştığını açıklayabilir misiniz? kavramsal olarak görselleştirmek benim için zor. Temel olarak her bir benzersiz tarih/istasyon çiftini alıyor ve sonra yazdığınız ortalama formülü uyguluyor mu? – mburke05

+0

@ mburke05 evet bu temelde, "sayım (ayrı dem)", sadece (d) grubunun (2) sayısının eşi olmayan # sayısını sayar ve bunların hepsini hesaba katacaktır. – FuzzyTree