我试图在满足特定条件的数据集中找到女性的比例:公司 ID、工作类别、性别、时间范围、州 ID 和州种类。为了做到这一点,我必须将符合此标准的女性总数除以符合标准的男性和女性总数。我目前正在查询数据以查找来自公司 20 的 # 女性,在工程中,从所有时间开始,种类和 id = 0 并将其除以符合该标准的男性和女性总数:
/* number of females in eng. jobs */
(SELECT 1.0*sum(hiring_sample_count)
FROM metrics m
JOIN category c ON
m.job_id = c.job_id
AND m.company_id = 20
AND c.standard_job_cat = 'Engineering'
AND dimension_value = 'Female'
AND time_frame = 'ALLTIME'
AND state_kind = 0
AND state_item_id =0) /
/* number of m+f in eng */
(SELECT sum(hiring_sample_count)
FROM metrics m
JOIN category c ON
m.job_id = c.job_id
AND m.company_id = 20
AND c.standard_job_cat = 'Engineering'
AND (dimension_value = 'Female'
OR dimension_value = 'Male')
AND time_frame = 'ALLTIME'
AND state_kind = 0
AND state_item_id =0))
问题是我想为数据集中所有工作类别、种类和 ID 的所有公司计算这个。我不确定如何在没有自己指定的情况下执行此操作,并且想知道是否有人可以提供帮助。我正在使用 SQLWorkbench,它是一个独立于 DBMS 的跨平台 SQL 查询工具。我将不胜感激(我没有使用 TSQL 或 PL/pgSQL)。
也为格式道歉。
您需要按要确定女性百分比的列列表进行分组,它将分别生成计数。计数本身是由条件聚合产生的:
SELECT
m.company_id
,c.standard_job_cat
,time_frame
,state_kind
,state_item_id
,sum(case when dimension_value = 'Female' then hiring_sample_count else 0 end) as females
,sum(hiring_sample_count) as total
,1.0*sum(case when dimension_value = 'Female' then hiring_sample_count else 0 end)/sum(hiring_sample_count) as female_proportion
FROM metrics m
JOIN category c
ON m.job_id = c.job_id
GROUP BY 1,2,3,4,5
ORDER BY 1,2,3,4,5;
1.0*
添加是为了避免整数除法,females
和total
列只是为了感知上下文
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句