SQL重复项减少,除以子查询结果的计数

SQL重复项减少,除以子查询结果的计数,sql,count,duplicates,divide,Sql,Count,Duplicates,Divide,伙计们 我遇到了一个问题 我正在处理一些有很多副本的记录。每个记录有三个键,一个personID、CostCtr(成本中心)和工作地点。 一组重复记录可能如下所示: PersonID Cost Ctr DaysInLocation DaysInMonth 1111 256 3 28 1111 256 0 28 1111 256 3

伙计们

我遇到了一个问题

我正在处理一些有很多副本的记录。每个记录有三个键,一个personID、CostCtr(成本中心)和工作地点。 一组重复记录可能如下所示:

PersonID    Cost Ctr    DaysInLocation  DaysInMonth
1111        256         3               28
1111        256         0               28
1111        256         3               28
1111        243         15              15
1111        243         15              15
1111        243         0               15
我想创建一个结果,将所有“daysInLocation”相加,然后除以不为0的“daysInLocation”计数,然后将所有daysInMonth除以daysInMonth计数

结果如下所示:

PersonID    CostCtr DaysInLocation  DaysInMonth
1111        256     3               28
1111        243     15              15
我还研究了如何划分sum(stuff)/count(subquery),其中sum(stuff)和count(subquery)共享相同的personID、CostCtr和其他键。

这就是您想要的吗

select personid, costctr
       sum(daysinlocation) / sum(case when daysinlocation <> 0 then 1 else 0
                                 end) as DaysInLocation,
       sum(DaysInMonth) / count(DaysInMonth)
from table t
group by personid, costctr;
选择personid,成本中心
总和(daysinlocation)/总和(当daysinlocation为0时,则为1,否则为0
结束)作为DaysInLocation,
总和(日/月)/计数(日/月)
来自表t
personid分组,成本中心;

DaysInMonth
表达式也可以是
avg(DaysInMonth)作为DaysInMonth

谢谢!这绝对是我要做的。我不知道我是怎么忘记avg的,我猜我在做这个的时候是晚上11点30分,哈。如何计算子查询中的结果并将位置中的天数除以它?总和(daysinlocation)/计数(子查询)?@user3191081。我想您可以在
from
子句中放置一个子查询。子查询不允许作为聚合函数的参数(至少在大多数SQL方言中是这样)。啊,这可能就是我以前出错的原因。谢谢