在 BigQuery SQL 中计算每个经理的工资中位数

Posted

技术标签:

【中文标题】在 BigQuery SQL 中计算每个经理的工资中位数【英文标题】:Computing the median of salaries under each manager in BigQuery SQL 【发布时间】:2019-08-16 06:20:42 【问题描述】:

我有一个包含以下列的 BigQuery 表:employeesalarygendermanager。我想计算每个团队(因此,对于每个经理)女性员工薪水的中位数。

我尝试过使用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 既不在 [.:.] 处分组也不聚合"

因此,我想获得一个包含 managermedian_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数据库 计算出每个部门的平均工资 最高工资和最低工资 语法怎么写?

如何使用 SQL (BigQuery) 计算 TF/IDF

在 Google BigQuery 中使用 TIME_DIFF 和多个条件

T-SQL:计算员工的总工资

使用 BigQuery SQL 计算同一 ID 的所有列值的模式

Bigquery:在 Bigquery 中计算余额或重写 SQL 脚本