计算 BigQuery 中每个经理的工资中位数 SQL
Computing the median of salaries under each manager in BigQuery SQL
我有一个 BigQuery table,其中包含以下列: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 list expression references column salary
which is neither grouped nor aggregated at [.:.]"
因此,我想得到一个 table,其中包含列 manager
和 median_of_women_salaries
,这将显示每位经理手下的女性工资的中位数。
非常感谢您的帮助!
您可以使用现有的共享 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 table,其中包含以下列: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 list expression references column salary
which is neither grouped nor aggregated at [.:.]"
因此,我想得到一个 table,其中包含列 manager
和 median_of_women_salaries
,这将显示每位经理手下的女性工资的中位数。
非常感谢您的帮助!
您可以使用现有的共享 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