如何解决按产品和部门划分
这里是表格的描述以及我尝试做的事情:
WITH Time AS(
SELECT *
FROM (VALUES(1011,48),(201,520),(36,120))V(id_project,time)),SectorProject AS(
SELECT *
FROM (VALUES(1011,'BM'),(1011,'Fi'),'Om'),'BM'))V(id_project,Sector1)),prductProject AS(
SELECT *
FROM (VALUES(1011,'bike'),'velo'),'pc'),'n'),'r' ))V(id_project,product))
select
T.id_project,Sector1,product,sum(time) as time,avg( sum(time)) over(partition by Sector1,product)
as avgtilme
from time T left join
SectorProject SP
on SP.id_Project = T.id_Project
left join
prductProject P
on p.id_Project = T.id_Project
group by T.id_project,product
order by T.id_project,product
这里是预期的结果:
如何在扇区和产品上分区 48?
解决方法
如果我正确理解了您的请求和数据结构,您应该能够通过在 SELECT clause
中使用以下内容来计算它
(0.0+t.time)/(count(1) over(partition by t.id_project))
0.0+
仅用于绕过自动转换为整数。
您似乎希望将平均值除以每个项目的数量。一种方法是:
avg( sum(time)) over (partition by t.id_project) * 1.0 / count(*) over (partition by t.id_project)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。