Oracle
 sql >> база данни >  >> RDS >> Oracle

Процент SQL Oracle

Бих предложил да изчислите текущия процент с помощта на прозоречна функция и след това да сравните резултата с 80.

В този малък примерен код показах как да го направя въз основа на резултата от вашата заявка, поставена в CTE блок, наречен your_data . Просто ви показва идеята.

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

Всъщност той връща 3 реда и вие казвате, че очаквате да бъдат показани 4 реда. За да добавите реда, където текущият процент първо надвишава вашата граница (80), можете да извлечете текущия процент на категория от текущата стойност, т.е. да замените sum(percentage) over (order by category) с sum(percentage) over (order by category) - percentage .

HTH




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Най-добри практики за съхраняване на пароли в shell / Perl скриптове?

  2. Как да инсталирам Oracle Instant Client на Mac?

  3. Използване на четими от човека константи в заявки

  4. ORA-04061:съществуващото състояние на тялото на пакета PACKAGE.NAME е невалидно, продължава

  5. как да актуализирате множество таблици в Oracle DB?