sql >> Base de Datos >  >> RDS >> Oracle

Porcentaje SQL Oracle

Sugeriría calcular un porcentaje de ejecución usando una función de ventana y luego comparar el resultado con 80.

En esta pequeña muestra de código, he mostrado cómo hacerlo según el resultado de su consulta colocada en un bloque CTE llamado your_data . Simplemente te muestra la idea.

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 realidad, devuelve 3 filas y usted dice que espera que se muestren 4 filas. Para agregar la fila donde el porcentaje actual primero excede su límite (80), puede extraer el porcentaje de categoría actual del valor actual, es decir, reemplazar sum(percentage) over (order by category) con sum(percentage) over (order by category) - percentage .

HTH