首先,根据行的大小将行分配到不同的分区中 ServiceType . 未指定 ORDER BY 和窗口规范,默认为 ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING . 然后,应用聚合 AVG 作为每个窗口的分析函数,得到每个分区的平均年平均值。因此,我们可以知道一个记录的年平均值是否低于其分区的平均值。 最后,对中间结果集进行计数。
SELECT
SERVICETYPE,
SUM(ISBELOW)
FROM (
SELECT
*,
CASE
WHEN ANNUALSALARY < AVG(ANNUALSALARY) OVER (PARTITION BY SERVICETYPE) THEN 1
ELSE 0
END AS ISBELOW
FROM ASSESSMENT
) TMP
GROUP BY SERVICETYPE
;
1条答案
按热度按时间polhcujo1#
首先,根据行的大小将行分配到不同的分区中
ServiceType
. 未指定ORDER BY
和窗口规范,默认为ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
.然后,应用聚合
AVG
作为每个窗口的分析函数,得到每个分区的平均年平均值。因此,我们可以知道一个记录的年平均值是否低于其分区的平均值。最后,对中间结果集进行计数。
注意,a
HAVING
子句用于在GROUP BY
,并且在筛选之前,各行的详细信息将丢失。