Funkce okna SQL - SQL window function

V dotazovacím jazyce databáze SQL umožňují funkce okna přístup k datům v záznamech těsně před a po aktuálním záznamu. Funkce okna definuje rámec nebo okno řádků s danou délkou kolem aktuálního řádku a provádí výpočet napříč množinou dat v okně.

      NAME |
------------
      Aaron| <-- Preceding (unbounded)
     Andrew|
     Amelia|
      James|
       Jill|
     Johnny| <-- 1st preceding row
    Michael| <-- Current row
       Nick| <-- 1st following row
    Ophelia|
       Zach| <-- Following (unbounded)

Ve výše uvedené tabulce další dotaz extrahuje pro každý řádek hodnoty okna s jedním předchozím a jedním následujícím řádkem:

 SELECT
  LAG(name, 1) 
    OVER(ORDER BY name) "prev",
  name, 
  LEAD(name, 1) 
    OVER(ORDER BY name) "next"
 FROM people
 ORDER BY name

Výsledný dotaz obsahuje následující hodnoty:

|     PREV |     NAME |     NEXT |
|----------|----------|----------|
|    (null)|     Aaron|    Andrew|
|     Aaron|    Andrew|    Amelia|
|    Andrew|    Amelia|     James|
|    Amelia|     James|      Jill|
|     James|      Jill|    Johnny|
|      Jill|    Johnny|   Michael|
|    Johnny|   Michael|      Nick|
|   Michael|      Nick|   Ophelia|
|      Nick|   Ophelia|      Zach|
|   Ophelia|      Zach|    (null)|

Reference