划分产品和部门
partition over product and sector
这里是表格的描述和我尝试做的事情:
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'),(1011,'Om'),(201,'BM'),(36,'BM'))V(id_project,Sector1)),
prductProject AS(
SELECT *
FROM (VALUES(1011,'bike'),(1011,'velo'),(1011,'pc'),(201,'n'),(36, '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, Sector1,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)
这里是表格的描述和我尝试做的事情:
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'),(1011,'Om'),(201,'BM'),(36,'BM'))V(id_project,Sector1)),
prductProject AS(
SELECT *
FROM (VALUES(1011,'bike'),(1011,'velo'),(1011,'pc'),(201,'n'),(36, '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, Sector1,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)