Oracle
 sql >> Base de données >  >> RDS >> Oracle

Pourcentage SQL Oracle

Je suggérerais de calculer un pourcentage courant à l'aide d'une fonction de fenêtre, puis de comparer le résultat à 80.

Dans ce petit exemple de code, j'ai montré comment le faire en fonction du résultat de votre requête placé dans un bloc CTE appelé your_data . Cela vous montre juste l'idée.

with 
    your_data (category, percentage) as(
        -- sample data based on your example
        select 1, 32 from dual union
        select 2, 20 from dual union
        select 3, 20 from dual union
        select 4, 10 from dual union
        select 5, 18 from dual
    ),
    t as (
        select  your_data.*,
                -- running sum calculation
                sum(percentage) over (order by category) pctg_running
          from  your_data 
    )
select * 
  from t
 where pctg_running <= 80

En fait, il renvoie 3 lignes et vous dites que vous vous attendez à ce que 4 lignes soient affichées. Afin d'ajouter la ligne où le pourcentage courant dépasse en premier votre limite (80), vous pouvez extraire le pourcentage de la catégorie actuelle de la valeur courante, c'est-à-dire remplacer sum(percentage) over (order by category) avec sum(percentage) over (order by category) - percentage .

HTH