所以這就是我所擁有的:
select
round(count(hired) / sum(count(population)) over(), 2) as freq,
hired,
population
from hr group by hired, population
order by population, hired DESC;
我有一個租用列,它是布林值,人口是美國或歐盟值。現在,頻率將整個人口中的雇傭人數劃分為 5,000 個值,但我希望它劃分為美國或歐盟的特定值。
任何人都可以幫助我這樣做嗎?謝謝
示例資料:
create table hr
(
candidate_id INTEGER PRIMARY KEY,
hired BOOLEAN NOT NULL,
population CHAR(2) NOT NULL
);
INSERT INTO hr VALUES (1,FALSE,'US');
INSERT INTO hr VALUES (2,TRUE,'US');
INSERT INTO hr VALUES (3,FALSE,'EU');
INSERT INTO hr VALUES (4,TRUE,'EU');
INSERT INTO hr VALUES (5,FALSE,'US');
INSERT INTO hr VALUES (6,FALSE,'EU');
而不是除以整個人口,我只想除以歐盟或美國的總價值
所以像歐盟的 True 是 1 但歐盟的總數是 3 所以 1/3 而不是 1/6
示例輸出:
/* Result:
frequency | hired |population|
---------- --------- ----------
0.33 | True | US |
0.66 | False| US |
0.33 | True | EU |
0.66 | False| EU |
*/
uj5u.com熱心網友回復:
select round(cnt/sum(cnt) over (partition by population), 2) as frequency,
hired, population
from
(
select population, hired, count(*)::numeric cnt
from hr
group by population, hired
) t
order by population desc, hired desc;
/* Result:
frequency|hired|population|
--------- ----- ----------
0.33|true |US |
0.67|false|US |
0.25|true |EU |
0.75|false|EU |
*/
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/360561.html
標籤:sql PostgreSQL的
上一篇:過濾唯一值
