Analytiska funktioner

Några ord om analytiska funktioner efter Tim Halls presentation på Ace Director Tour 2013. Jag tänker försöka sammanfatta det han sa på svenska (blandat med lite SQL och engelska).

  • Trots att analytiska funktioner baseras på grupper av data (group by) så reduceras inte antalet rader i resultatet.
  • De analytiska funktionerna processas efter att datat är hämtat, men före en eventuell sortering av det.

En analytisk funktion har några olika delar

analytic_function([ arguments ]) OVER (analytic_clause)

Där ”analytic clause” består av

[ query_partition_clause ] [ order_by_clause [  windowing_clause ] ]

query_partition delen, delar upp datat i grupper (partitioner – tänk GROUP BY), den analytiska funktionen begränsas av av gränserna som den här delen av frågan sätter upp. Saknas den så används hela resultatet.

order_by delen sorterar datat i varje partition, men inte i resultatet av hela frågan. Använd alltid en ORDER BY på frågan för att få önskad sortering. (Förväxla ej Order by för en analytisk funktion med en vanlig ORDER BY.

windowing delen förfinar resultatet av order by om man behöver. Defaultvärdet är inte vad man räknar med. Det logiska vore hela partitionen, men default är ”Range between unbounded preceding and current row” dvs från första raden i partitionen till och med raden man står på.

Läs Tims presentation och kolla på demot för fördjupning.

En reaktion på ”Analytiska funktioner

Kommentarer inaktiverade.