Apache Derby: funkcje kolumnowe
Nazywane są również ‘funkcjami operującymi na zbiorach’ lub ‘funkcjami agregującymi’.
Inne funkcje (skalarne) działają zawsze na pojedynczej wartości pobranej z określonej kolumny określonego rzędu (rekordu). Pojedyncza wartość jest argumentem – pojedyncza wartość jest zwracana jako wynik.
Funkcje kolumnowe działają na pewnej liczbie rzędów (zbiorze) pobranych z pewnej kolumny. Wynikiem jest zawsze jedna liczba. Wbudowane funkcje to AVG (średnia), COUNT (liczba), MIN (minimum), MAX (maksimum), STDDEV_POP(odchylenie standardowe z populacji, STDDEV_SAMP (odchylenie standardowe z próby), SUM (suma), VAR_POP (wariancja z populacji), VAR_SAMP (wariacja z próby).
Dokumentacja Derby następująco określa typy danych dozwolone dla wbudowanych funkcji agregujących:
Funkcja | Dozwolone typy danych | Typ zwracany |
---|---|---|
COUNT | Wszystkie typy | INTEGER |
MIN | Wszystkie typy, które mogą być indeksowane | Typ kolumny |
MAX | Wszystkie typy, które mogą być indeksowane | Typ kolumny |
AVG | Wbudowane numeryczne typy danych | Typ kolumny |
SUM | Wbudowane numeryczne typy danych | Typ kolumny |
STDDEV_POP | Wbudowane numeryczne typy danych | Typ kolumny |
STDDEV_SAMPLE | Wbudowane numeryczne typy danych | Typ kolumny |
VAR_POP | Wbudowane numeryczne typy danych | Typ kolumny |
VAR_SAMPLE | Wbudowane numeryczne typy danych | Typ kolumny |
Funkcje kolumnowe mogą być używane w:
- w ‘SelectItem’ w ‘SelectExpression’
- w klauzuli HAVING
- w klauzuli ORDER BY (przy użyciu aliasu), jeśli funkcja pojawia się w wyniku odpwowiedniego bloku zapytania, czyli użycie funkcji agregującej jest dozwolone wtedy i tylko wtedy, gdy funkcja agregująca pojawia się zarówno w ‘SelectItem’ jak i ‘SelectExpression’
Wszystkie wyrażenia w ‘SelectItem’ w ‘SelectExpression’ muszą być agregatami lub zgrupowanymi kolumnami (klauzula GROUP BY).
Agregaty nie są dozwolone w referencjach zewnętrznych (korelacjach).
Derby pozwala na tworzenie własnych agregatów. Pokaże to już niedługo.