PostgreSQL i funkcje okienkowe – suma narastająca

PostgreSQL

W poprzednim wpisie opisywałem funkcję rank() jako pierwszą z okienkowych. Kolejną często wykorzystywaną funkcją podczas tworzenia raportów jest suma narastająca.

Dane wejściowe.

Suma narastająca całego zbioru.

Cel: raport wyników studentów wraz z narastającą sumą zdobytych punktów.

Suma wszystkich punktów w tabeli wynosi 230,5:

UWAGA!

Mogłoby się wydawać, że takie zapytanie można wykonać z wykorzystaniem sortowania według punktów w funkcji okienkowej (ORDER BY points):

Jak widać w powyższym przykładzie zapytanie jest błędne, ponieważ nie otrzymamy sumy narastającej dla każdego rekordu, lecz dla każdej unikalnej wartości.
Dla studentów 3, 4 i 6 wartość w kolumnie „sum” jest taka sama i zawiera narastającą sumę ich wszystkich (77.5 + 3 * 29 = 164,5).

Dlatego:

W celu zwrócenia sumy narastającej należy wykonać w funkcji okienkowej sortowanie również po unikalnym identyfikatorze rekordu.

W tym przypadku chcemy otrzymać sumę narastającą według uzyskanych punktów, dlatego należy wykonać sortowanie po punktach, a następnie po unikalnym identyfikatorze – w tym przypadku id studenta.

Suma narastająca z partycjonowaniem według grup.

Cel: raport wyników studentów wraz z narastającą sumą zdobytych punktów odrębnie dla każdej grupy.

W tym przypadku narastające sumy zostały wykonane dla każdej z grupy z osobna:

  1. Grupa A: 87,5
  2. Grupa B: 62
  3. Brupa C: 81

To również może Cię zainteresować:

  • PostgreSQL i funkcje okienkowe – pozycja w rankinguPostgreSQL i funkcje okienkowe – pozycja w rankingu Funkcja okienkowa wykonuje obliczenia w całym zbiorze wierszy tabeli, które są w jakiś sposób związane z bieżącym wierszem. Jest to porównywalne do rodzaju obliczenia, które mogą być […]
  • PL/SQL, recenzja kursu wideo z Videopoint.plPL/SQL, recenzja kursu wideo z Videopoint.pl W kolejnym artykule recenzującym materiały z videopoint.pl zajmiemy się  kursem: "PL/SQL. Kurs video. Od podstaw do zagadnień zaawansowanych. Programowanie baz danych". Tym razem […]
  • Praktyki mistrza SQL. Programowanie zaawansowane. Recenzja książki.Praktyki mistrza SQL. Programowanie zaawansowane. Recenzja książki. Niniejszy wpis to kolejna recenzja książki przygotowana przez Bartka Medonia na moim blogu. Tym razem do oceny trafiła nowość wydana w połowie października tego roku - "Praktyki mistrza […]
  • Redis w WindowsRedis w Windows Redis (skrót od Remote Dictionary Service) jest pamięciową bazą NoSQL przechowującą dane jako pary klucz - wartość. Dzięki przechowywaniu danych w pamięci RAM charakteryzuje się wysoką […]
  • Permutacje i zagadka z trójkątemPermutacje i zagadka z trójkątem Rozwiąż poniższą zagadkę: Rozwiązanie i trochę o permutacjach poniżej. Jednak zachęcam spróbować samodzielnie rozwiązać to zadanie. Rozwiązanie logiczne Warunkiem poprawności jest […]
  • X Mistrzostwa Wielkopolski w Programowaniu ZespołowymX Mistrzostwa Wielkopolski w Programowaniu Zespołowym W tym roku po raz dziesiąty odbędą się Mistrzostwa Wielkopolski w Programowaniu Zespołowym (MWPZ), których jednym z oficjalnych patronów medialnych jest Notatnik Programisty! Mistrzostwa […]

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *