我已尝试尽可能减少此问题。我有两个共享一些ID的表(在其他列中)
id id
---- ----
1 1
1 1
2 1
2
2
首先,我可以将每个表解析为一个简单的计数,其中包含每个ID的数量:
select id, count(*) from tbl1 group by id
select id, count(*) from tbl2 group by id
id | tbl1-count id | tbl2-count
--------------- ---------------
1 2 1 3
2 1 2 2
但是我很不知所措,我试图得到以下输出,该输出显示每个id从tbl2的计数,除以相同id从tbl1的计数:
out-id | out-count
==================
1 | 1.5
2 | 1
到目前为止,我已经知道了:
select tbl1.Id, tbl2.Id, count(*)
from tbl1
join tbl2 on tbl1.Id = tbl2.Id
group by tbl1.Id, tbl2.Id
这只是给我...好吧...说实话,这远远超出了我的需求!我正在尝试count(tbl1.Id),count(tbl2.Id),但得到相同的乘数(因为我想加入吗?)-我无法将单个表示放入可以进行除法的单个列中。
非常感谢任何建议!
您可以先聚合子查询,然后再聚合join
:
select t1.id, t2.cnt / t1.cnt
from (select id, count(*) as cnt
from tbl1
group by id
) t1 join
(select id, count(*) as cnt
from tbl2
group by id
) t2
on t1.id = t2.id