我正在尝试计算表A中的行与表B中的行的比率。如果我只需要计算整个集合的比率,这本来很容易,但我想将它们按存在的类别进行分组在表B中。 表A和B通过主键(id)链接。
编辑:
我尝试了以下内容:
{{1}}
但是group by命令在这里不起作用。
答案 0 :(得分:0)
这是:DEMO
.image{
width: 40%;
border: 1px solid #ffffff;
}
答案 1 :(得分:0)
这应该返回你想要的东西:
SELECT p.age, 100 * COUNT(c.id) / COUNT(p.id)
FROM football_players AS p
LEFT JOIN class AS c
ON p.id = c.id
GROUP BY p.age
将class_a
的行数除以football_players
的行数。
答案 2 :(得分:0)
您需要一个外部联接,然后将外部联接表中的行数除以组中的总行数:
select fp.age,
(count(cl.id)::numeric / count(*)::numeric) * 100 as ration,
count(cl.id) as class_count,
count(*) as age_count
from football_players fp
left join class cl on fp.id = cl.id
group by fp.age
转换::numeric
是获取小数值所必需的,否则除法的结果将转换为整数。
SQLFiddle:http://sqlfiddle.com/#!15/3373c/3