sql >> Database teknologi >  >> RDS >> Oracle

Procentdel SQL Oracle

Jeg vil foreslå at beregne en kørende procentdel ved hjælp af en vinduesfunktion og derefter sammenligne resultatet med 80.

I dette lille kodeeksempel har jeg vist, hvordan man gør det baseret på resultatet af din forespørgsel placeret i en CTE-blok kaldet your_data . Det viser dig bare ideen.

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

Faktisk returnerer den 3 rækker, og du siger, at du forventer, at 4 rækker vises. For at tilføje rækken, hvor køreprocenten først overstiger din grænse (80), kan du udtrække den aktuelle kategoriprocent fra den løbende værdi, dvs. erstatte sum(percentage) over (order by category) med sum(percentage) over (order by category) - percentage .

HTH




  1. Hvordan opgraderes til PostgreSQL 11 til Ubuntu 18.04?

  2. indsæt værdi tekstboks i mysql database

  3. Sådan opretter du et sitemap ved hjælp af PHP og MySQL

  4. Hvordan kan vi bruge ISNULL til alle kolonnenavne i SQL Server 2008?