J'ai cherché un exemple simple pour additionner deux requêtes et obtenir une sortie finale sous la forme d'une valeur unique. J'ai mis en place une requête simple ci-dessous à utiliser comme exemple.
SELECT Count (banana) FROM FRUIT_BASKET WHERE CONDITION = 'ROTTEN' / -- THEN DIVIDE THIS NUMBER BY SELECT Count (banana) FROM FRUIT_BASKET * 100 -- TO GET A PERCENTAGE
Toute aide sera un grand merci à tous
4 Réponses :
Cela devrait le faire:
SELECT COUNT(CASE WHEN CONDITION = 'ROTTEN' THEN banana END) * 100 / COUNT(banana) FROM FRUIT_BASKET
Vous pouvez effectuer une agrégation conditionnelle:
select count(case when condition = 'ROTTEN' then banana end) / count(banana) * 100 from fruit_basket
J'aime utiliser AVG ()
pour ceci:
SELECT AVG(CASE WHEN Condition = 'Rotten' THEN 100.0 ELSE 0 END) FROM FRUIT_BASKET WHERE banana IS NOT NULL;
C'est propre. Note latérale: oracle ne fait pas de division entière (comme vous le savez), donc pas besoin de la partie décimale dans 100.0
.
@GMB. . . C'est juste une habitude donc je n'ai pas à y penser.
Je considérerais certainement le scénario diviser par zéro dans ce cas.
Il vaut donc mieux utiliser la fonction d'agrégation avg
comme suggéré par gordon ou gérer diviser par zéro scénario par vous-même comme suit:
select count(case when condition = 'ROTTEN' then banana end) / decode(count(banana),0,1) * 100 from fruit_basket
Cheers !!