sql - 如何将平均值与总和相加
问题描述
我的查询是:
select
TIERING_2, ASP_NAME ,
sum(case when SUBCASE_MEASURED = '1' AND FE_TYPE = 'ASP' AND CLOSE_MONTH = '3' and region = 'EEMEA' AND SCHEDULED_RESCHEDULED = 'Scheduled' then 1 else 0 end) DA_SCHEDULED,
sum(case when SUBCASE_MEASURED = '1' AND FE_TYPE = 'ASP' AND CLOSE_MONTH = '3' and region = 'EEMEA' AND SCHEDULED_RESCHEDULED = 'Reactive' then 1 else 0 end) FE_DELAY,
sum(case when SUBCASE_MEASURED = '1' AND FE_TYPE = 'ASP' AND CLOSE_MONTH = '3' and region = 'EEMEA' AND SCHEDULED_RESCHEDULED = 'Reactive' then 1 else 0 end)Onsite_Time,
sum(case when SUBCASE_MEASURED = '1' AND FE_TYPE = 'ASP' AND region = 'EEMEA' AND SCHEDULED_RESCHEDULED = 'Reactive' and LATE_START_CONF_INDICATOR = '0'then 1 else 0 end) Late_hours,
sum(case when SUBCASE_MEASURED = '1' AND FE_TYPE = 'ASP' AND CLOSE_MONTH = '3' AND ASP_ON_TIME = '1' then 1 else 0 end) ON_TIME
from table_Control_kpi GROUP BY ASP_NAME , TIERING_2
然而,除了总和之外,我还想要平均现场时间。有人可以帮我将以下查询与上述查询结合起来吗
SELECT AVG(ONSITE_TIME)
FROM table_Control_kpi
WHERE SCHEDULED_RESCHEDULED = 'Reactive'
AND ASP_NAME='3D Networks'
AND SUBCASE_MEASURED = '1'
AND FE_TYPE = 'ASP'
AND CLOSE_MONTH = '3'
解决方案
也许使用window function
?
SELECT TIERING_2, ASP_NAME ,
--all the sums up there
,AVG(CASE
WHEN SCHEDULED_RESCHEDULED = 'Reactive'
AND ASP_NAME='3D Networks'
AND SUBCASE_MEASURED = '1'
AND FE_TYPE = 'ASP'
AND CLOSE_MONTH = '3'
THEN ONSITE_TIME END) OVER ()
FROM table_Control_kpi GROUP BY ASP_NAME , TIERING_2
推荐阅读
- http - 一个网站可以同时是 HTTP 和 HTTPS 吗?
- c# - 在 c# 中,当应用程序最小化时,ProcessCmdKey 有办法吗?
- postgresql - 找出postgresql查询进度
- postgresql - 使用 pgfutter 将 CSV 导入到 postgresql
- javascript - toString 方法应该返回正确的层次结构(嵌套回复)
- java - 如何在 javaFx 中连接按钮监听器
- c# - 将 Unicode 代理对转换为文字字符串
- elasticsearch - 策展人分配操作不会将 ES 索引 box_type 设置从“热”更改为“暖”
- python - 显示从 csv 到 pandas 的列
- php - 使用匿名帐户登录