我要数一数有多少低于平均工资表

juzqafwq  于 2021-06-25  发布在  Hive
关注(0)|答案(1)|浏览(357)
SELECT
    *, 
    COUNT (AnnualSalary < avg(AnnualSalary)) AS Count 
FROM Assessment 
GROUP BY ServiceType

这是一个配置单元查询,我试图计算表中有多少记录的收入低于平均工资

polhcujo

polhcujo1#

首先,根据行的大小将行分配到不同的分区中 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
;

注意,a HAVING 子句用于在 GROUP BY ,并且在筛选之前,各行的详细信息将丢失。

相关问题