Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Porcentagem SQL Oracle


Sugiro calcular uma porcentagem em execução usando uma função de janela e comparar o resultado com 80.

Neste pequeno exemplo de código, mostrei como fazer isso com base no resultado de sua consulta colocada em um bloco CTE chamado your_data . Apenas mostra a ideia.
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

Na verdade, ele retorna 3 linhas e você diz que espera que 4 linhas sejam mostradas. Para adicionar a linha em que a porcentagem em execução excede primeiro seu limite (80), você pode extrair a porcentagem da categoria atual do valor em execução, ou seja, substituir sum(percentage) over (order by category) com sum(percentage) over (order by category) - percentage .

HTH