Zielony Smok - logo witryny

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.