嵌套分组依据(SQL),保留分组值
我的数据结构如下:嵌套分组依据(SQL),保留分组值,sql,group-by,Sql,Group By,我的数据结构如下: 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
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
我希望它看起来像下面这样:
Imp的计算方法是:每小时DEM的总和,然后是每天小时的平均值
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
例如,获得2016年2月1日和station1;imp=((6+0)+(10+1))/2
我遇到的问题是,在对
dem
或hour
或date执行GROUP BY
操作时,我不确定如何保留桩号值。您可以将总和除以count(distinct dem)
,它具有每个日期/桩号对的唯一dem
select date, station, sum(imp) / count(distinct dem)
from mytable
group by date, station
太好了,谢谢!因为我是初学者,你能解释一下有两列的分组是如何工作的吗?从概念上讲,我很难想象。基本上是将每个唯一的日期/站点对计算出来,然后应用您编写的平均公式吗?@mburke05是的,基本上是这样的,count(distinct dem)
只计算组(2)中唯一的dem,而不是count(dem)
将它们全部计算出来(4)