Рубрики

SQL | LISTAGG

Функция LISTAGG в СУБД используется для объединения строк из данных в столбцах таблицы базы данных.

  • Это позволяет легко объединять строки. Это похоже на конкатенацию, но использует группировку.
  • Особенность этой функции заключается в том, что она также позволяет упорядочивать элементы в объединенном списке.

Синтаксис:

LISTAGG (measure_expr [, 'delimiter']) WITHIN GROUP 
(order_by_clause) [OVER query_partition_clause]
measure_expr : The column or expression to concatenate the values.
delimiter : Character in between each measure_expr, which is by default a comma (,) .
order_by_clause : Order of the concatenated values.

Давайте представим таблицу с именем Gfg, в которой есть два столбца, в которых указаны имена и номера субъектов, к которым принадлежит каждый объект, как показано ниже:

SQL> select * from GfG;

SUBNO      SUBNAME
---------- ------------------------------
D20        Algorithm
D30        DataStructure
D30        C
D20        C++
D30        Python
D30        DBMS
D10        LinkedList
D20        Matrix
D10        String
D30        Graph
D20        Tree

11 rows selected.

Запрос 1: Напишите SQL-запрос, используя функцию LISTAGG для вывода имен субъектов в одном поле со значениями, разделенными запятыми.

SQL> SELECT LISTAGG(SubName, ' , ') WITHIN GROUP (ORDER BY SubName) AS SUBJECTS
  2  FROM   GfG ;

Выход:

SUBJECTS
-----------------------------------------------------------------------------------
Algorithm , C , C++ , DBMS , DataStructure , Graph , LinkedList , Matrix , Python ,
String , Tree

Запрос 2: Напишите SQL-запрос, чтобы сгруппировать каждый предмет и показать каждый предмет в соответствующем отделе через запятую с помощью функции LISTAGG.

SQL> SELECT SubNo, LISTAGG(SubName, ' , ') WITHIN GROUP (ORDER BY SubName) AS SUBJECTS
  2  FROM   GfG
  3  GROUP BY SubNo;

Выход:

SUBNO      SUBJECTS
------     --------------------------------------------------------------------------------
D10        LinkedList , String
D20         Algorithm , C++ , Matrix , Tree
D30         C , DBMS , DataStructure , Graph , Python

Запрос 3: Напишите запрос SQL, чтобы показать субъекты, относящиеся к каждому отделу, упорядоченные по номеру субъекта (SUBNO) с помощью функции LISTAGG.

SQL> SELECT SubNo, LISTAGG(SubName, ',') WITHIN GROUP (ORDER BY SubName) AS SUBJECTS
  2  FROM   GfG
  3  GROUP BY SubNo
  4  ORDER BY SubNo;

Выход:

SUBNO        SUBJECTS
-----        --------------------------------
D10          LinkedList, String
D20          Algorithm, C++, Matrix, Tree
D30          C, DBMS, DataStructure, Graph, Python

Эта статья предоставлена МАЖАР ИМАМ ХАН. Если вы как GeeksforGeeks и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи contribute@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

SQL | LISTAGG

0.00 (0%) 0 votes