Temat: Oracle - funkcje analityczne
Hej,
Poniżej 2 proste przykłady dot. funkcji analitycznych:
Definicja wywołania funkcji analitycznej:
fun(kolumna) over (sposób_grupowania sposób_sortowania)
Przykład1: Wyświetlić nazwy towarów, ich ceny i średnią cenę w tej samej grupie podatkowej, średnią cenę wszystkich towarów:
SELECT tow_nazwa
, tow_cena
, avg(tow_cena) over (partition by tow_podatek)
, avg(tow_cena) over ()
FROM TOWARY
Wywołania funkcji analitycznych można oprzeć nie tylko na grupowaniu, ale także na zdefiniowanym porządku w każdej grupie:
Przykład2: Wyświetlić najdroższy towar w każdej grupie podatkowej
SELECT tow_nazwa, tow_podatek, tow_cena
FROM (
SELECT tow_nazwa
, tow_cena
, tow_podatek
, rank() over (partition by tow_podatek
order by tow_cena) pozycja
FROM towary
)
WHERE pozycja = 1