如何划分两个SELECT COUNT结果?

时间:2017-09-15 14:34:34

标签: sql oracle count divide

我使用的是Oracle 11g,我想从我的SQL查询中划分2个结果:

SELECT ((SELECT COUNT(PK_id) FROM TAB1) / SELECT COUNT(TAB1.PK_id)
FROM TAB1
INNER JOIN TAB2 ON TAB2.PK_id = TAB1.FK_id
FROM TAB2;

我想用2个SQL查询结果除以COUNT的结果。 在第一个查询中,我计算我拥有的ID的数量,第二个,我创建一个内连接来计算我在TAB1和我的TAB2上的ID。

Tancks。 亚历

3 个答案:

答案 0 :(得分:0)

删除第二次计数前的选择

SELECT ( (SELECT COUNT(PK_id) FROM TAB1) / COUNT(TAB1.PK_id) )
FROM TAB1
INNER JOIN TAB2 ON TAB2.PK_id = TAB1.FK_id
FROM TAB2;

答案 1 :(得分:0)

您可以使用单个查询将其标记为:

SELECT
    COUNT(DISTINCT t1.PK_id) / COUNT(t1.PK_id) AS cnt_ratio
FROM TAB1 t1
INNER JOIN TAB2 t2
    ON t2.PK_id = t1.FK_id

答案 2 :(得分:0)

您是否正在尝试计算TAB1中具有TAB2外键的记录的比例?是否启用了外键?

你能不能只说:

select count(pk_id)/ count(fk_id) 
-- counting pk_id will get you all records, and counting fk_id will got you records with fk_id not null
from tab1

但是,您可能希望防止空值和0计数