2017-09-15 5 views
0

J'utilise Oracle 11g et je veux diviser 2 résultat de ma requête SQL:Comment diviser deux résultats SELECT COUNT?

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; 

Je veux diviser, avec 2 résultat de la requête SQL, le résultat du comte. Sur la première requête, je compte le nombre d'ID que j'avais, et en second lieu, je fais une jointure interne pour compter ID que j'avais dans mon TAB1 et sur mon TAB2 ..

Tancks. Alex

Répondre

0

Retirez le sélection avant que le 2e chef

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; 
0

Vous pourriez phrase cela en utilisant une seule requête comme:

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 
0

Vous essayez de calculer la ration des dossiers en TAB1 que a une clé étrangère de TAB2? La clé étrangère est-elle activée?

Pouvez-vous pas seulement dire:

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 

Cependant, vous pouvez protéger contre et 0 nulls en nombre