СКЛ низове агрегатне функције

Skl Nizove Agregatne Funkcije



Ако сте се икада бавили СКЛ базама података, вероватно сте упознати са агрегатним функцијама. Они су у суштини скуп функција које обављају прорачуне на скупу вредности и враћају један резултат.

Пример укључује функције као што су СУМ(), АВГ(), ЦОУНТ(), МАКС и МИН(). Међутим, једна ствар коју ћете приметити у вези са агрегатним функцијама у СКЛ-у је да су усмерене на нумеричке операције.

Али да ли сте знали да постоје агрегатне функције које се баве вредностима стрингова? У овом водичу ћемо погледати ове функције, како функционишу и како их можемо користити у нашим базама података.







НАПОМЕНА: Добро је напоменути да већина функција о којима се говори у овом посту нису део стандардног СКЛ-а. Као резултат тога, они су проширење различитих машина базе података као што су ПостгреСКЛ, СКЛ Сервер, итд.



Шта су низове агрегатне функције?

Функције агрегата стрингова су скуп функција које обављају операције агрегације на скупу низова у оквиру групе или редова и враћају један резултат.



Ове функције углавном користимо са клаузулом ГРОУП БИ да групишемо редове на основу одређене колоне, а затим да агрегирамо низове у свакој групи.





Неке уобичајене агрегатне функције низова укључују:

  • ГРОУП_ЦОНЦАТ() – ПостгреСКЛ и МиСКЛ
  • СТРИНГ_АГГ – СКЛ Сервер
  • АРРАИ_АГГ – ПостгреСКЛ
  • ЛИСТАГГ – Орацле

Хајде да истражимо сваку функцију и шта она пружа.



ГРОУП_ЦОНЦАТ()

ПостгреСКЛ и МиСКЛ базе података подржавају функцију ГРОУП_ЦОНЦАТ(). Омогућава нам да повежемо вредности из више редова у један стринг.

Претпоставимо да имамо следећу табелу „запослени“:

ЦРЕАТЕ ТАБЛЕ запослених (
Емплоиее_ид ИНТ АУТО_ИНЦРЕМЕНТ ПРИМАРИ КЕИ,
име ВАРЦХАР(50),
презиме ВАРЦХАР(50),
одељење ВАРЦХАР(50)
);

УМЕТНИ У ВРЕДНОСТИ запослених (име, презиме, одељење).
('Алице', 'Смит', 'Људски ресурси'),
('Боб', 'Јохнсон', 'Маркетинг'),
(„Чарли“, „Вилсон“, „Финансије“),
('Давид', 'Бровн', 'Салес'),
('Ева', 'Давис', 'Инжењеринг');

Излаз:

Ако желимо да одредимо пуно име запосленог узимањем имена и спајањем са презименом, можемо користити функцију ГРОУП_ЦОНЦАТ() као што је приказано у следећем примеру:

СЕЛЕЦТ
одељење,
ГРОУП_ЦОНЦАТ(име, ' ', презиме) КАО пуно_име
ИЗ
запослених
ГРУПА ОД
одељење;

У овом случају користимо функцију за спајање стрингова из колона „фирст_наме“ и „ласт_наме“ и празан стринг да додамо размак именима.

Ово садржи списак запослених у сваком одељењу.

СТРИНГ_АГГ

Ова функција је слична функцији ГРОУП_ЦОНЦАТ(), али је подржана само у бази података СКЛ Сервера.

Пример употребе је следећи:

СЕЛЕЦТ
одељење,
СТРИНГ_АГГ(име, презиме, ' ') КАО пуно_име
ИЗ
запослених
ГРУПА ОД
одељење;

Ово врши конкатенацију стрингова на наведеним колонама као размак као граничник.

АРРАИ_АГГ

Функција АРРАИ_АГГ доступна је само у ПостгреСКЛ бази података. Омогућава нам да агрегирамо вредности у један низ.

Пример је следећи:

СЕЛЕЦТ
одељење,
АРРАИ_АГГ(фирст_наме) АС списак_запослених
ИЗ
запослених
ГРУПА ОД
одељење;

Ово би требало да агрегира име запосленог као низ.

ЛИСТАГГ()

Функција ЛИСТАГГ() доступна је само у Орацле бази података. Омогућава нам да повежемо вредности у један стринг са одређеним граничником.

Пример је следећи:

ИЗАБЕРИ одељење, ЛИСТАГГ(име, презиме,  ' ') УНУТАР ГРУПЕ (ПОРЕДАК ПО имену запосленог АСЦ) КАО запослени
ОД запослених
ГРУПА ПО одељење;

Ово спаја имена запослених и наведени граничник.

Закључак

У овом водичу смо научили о функцијама агрегата стрингова које нам омогућавају да обезбедимо листу вредности стрингова и извршимо операцију у једну резултујућу вредност стринга.