Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Procentowa wyrocznia SQL

Proponuję obliczyć bieżący procent za pomocą funkcji okna, a następnie porównać wynik z 80.

W tym małym przykładzie kodu pokazałem, jak to zrobić na podstawie wyniku zapytania umieszczonego w bloku CTE o nazwie your_data . Po prostu pokazuje Ci pomysł.

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

W rzeczywistości zwraca 3 wiersze i mówisz, że oczekujesz wyświetlenia 4 wierszy. Aby dodać wiersz, w którym procent bieżący najpierw przekracza twoją granicę (80), możesz wyodrębnić procent bieżącej kategorii z wartości bieżącej, tj. zastąpić sum(percentage) over (order by category) z 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. Wyrażenia regularne Oracle. Niebezpieczny zasięg

  2. Oracle CONNECT BY rekurencyjne zapytanie podrzędne do nadrzędnego, w tym nadrzędny nadrzędny, który odwołuje się do siebie

  3. 4 sposoby znajdowania wierszy zawierających wielkie litery w Oracle

  4. Jak zapisać dane Unicode w Oracle?

  5. Dlaczego Mysql's Group By i Oracle's Group by różnią się zachowaniami?