在 BigQuery SQL 中计算每个经理的工资中位数
Posted
技术标签:
【中文标题】在 BigQuery SQL 中计算每个经理的工资中位数【英文标题】:Computing the median of salaries under each manager in BigQuery SQL 【发布时间】:2019-08-16 06:20:42 【问题描述】:我有一个包含以下列的 BigQuery 表:employee
、salary
、gender
、manager
。我想计算每个团队(因此,对于每个经理)女性员工薪水的中位数。
我尝试过使用PERCENTILE_CONT(..., 0.5)
navigation function,但它似乎不支持GROUP BY
这是我的查询:
SELECT
manager,
PERCENTILE_CONT(salary,
0.5) OVER() AS median_of_women_salaries
FROM
employees_table
WHERE
gender = 'woman'
GROUP BY
manager
我得到的是错误信息:
"SELECT 列表表达式引用列 salary
既不在 [.:.] 处分组也不聚合"
因此,我想获得一个包含 manager
和 median_of_women_salaries
列的表格,其中将显示每位经理下女性工资的中位数。
非常感谢您的帮助!
【问题讨论】:
【参考方案1】:您可以使用现有的共享 UDF:
SELECT
manager,
fhoffa.x.median(ARRAY_AGG(salary)) AS median_of_women_salaries
FROM employees_table
WHERE gender = 'woman'
GROUP BY manager
https://medium.com/@hoffa/new-in-bigquery-persistent-udfs-c9ea4100fd83
https://console.cloud.google.com/bigquery?p=fhoffa&d=x&r=median&page=routine
【讨论】:
以上是关于在 BigQuery SQL 中计算每个经理的工资中位数的主要内容,如果未能解决你的问题,请参考以下文章
SQL数据库 计算出每个部门的平均工资 最高工资和最低工资 语法怎么写?
在 Google BigQuery 中使用 TIME_DIFF 和多个条件