sql >> Databáze >  >> RDS >> Oracle

Procento SQL Oracle

Navrhoval bych vypočítat průběžné procento pomocí funkce okna a poté porovnat výsledek s 80.

V této malé ukázce kódu jsem ukázal, jak to udělat na základě výsledku vašeho dotazu umístěného do bloku CTE s názvem your_data . To vám jen ukazuje myšlenku.

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

Ve skutečnosti vrací 3 řádky a říkáte, že očekáváte, že se zobrazí 4 řádky. Chcete-li přidat řádek, kde průběžné procento nejprve překročí vaši hranici (80), můžete z průběžné hodnoty extrahovat aktuální procento kategorie, tj. nahradit sum(percentage) over (order by category) s sum(percentage) over (order by category) - percentage .

HTH




  1. Sequelize Najít patříToMany Association

  2. Automaticky aktualizujte materializovaný pohled pomocí pravidla nebo upozornění

  3. Automatická oprava plánu v SQL Server

  4. Vyberte dotaz ve dvou tabulkách v MySQL