Ajude o desenvolvimento do site, compartilhando o artigo com os amigos!

Introdução ao PostgreSQL STRING_AGG()

PostgreSQL suporta vários tipos de função de agregação, A função STRING_AGG() é uma das funções de agregação que é usada para concatenar a lista de strings e adicionará um lugar a um símbolo delimitador ou um separador entre todos os cordas. O símbolo separador ou delimitador não será incluído no final da string de saída. A função STRING_AGG() do PostgreSQL é suportada a partir da versão 9.0 do PostgreSQL, que é usada para executar a opção de agregação relacionada à string.Podemos usar vários tipos de separadores ou símbolos delimitadores para concatenar as strings.

Sintaxe

Considere a seguinte sintaxe:

STRING_AGG ( expressão, separador|delimitador (ordem_por) )

Explicação:

A função STRING_AGG() recebe a cláusula ORDER BY de entrada é opcional e outros dois argumentos da seguinte forma:

  1. expression: Esta é uma cadeia de caracteres que é qualquer expressão válida.
  2. separador/delimitador: Isso define o separador/delimitador que será usado para concatenação de strings.

A cláusula ORDER BY é uma cláusula opcional, que define a ordem dos resultados de strings concatenados.

O ORDER BY tem a seguinte sintaxe:

ORDER BY expressão1 {ASC - DESC}, (… )

Como funciona a função STRING_AGG() do PostgreSQL?

  1. A expressão de entrada necessária deve ser um tipo de dados de cadeia de caracteres. Também podemos usar outros tipos de dados, mas só precisamos ter certeza de que convertemos explicitamente outros tipos de dados para o tipo de dados string de caracteres.
  2. O PostgreSQL STRING_AGG() nos retorna o resultado em tipo string.
  3. O STRING_AGG() é geralmente usado com a cláusula GROUP BY como usamos outras funções agregadas do PostgreSQL como MIN(), MAX(), AVG(), SUM() e COUNT() etc.

Exemplos para implementar a função STRING_AGG() do PostgreSQL

Criaremos uma tabela chamada 'aluno' e 'curso' usando a instrução CREATE TABLE da seguinte forma:

TABELA DE ALUNOS:

criar mesa aluno
(
stud_id serial PRIMARY KEY,
stud_name VARCHAR(80) NOT NULL,
stud_grade CHAR(1) NOT NULL,
stud_country VARCHAR(80) NOT NULL,
course_id int NOT NULL
);

TABELA DE CURSO:

criar curso de mesa
(
course_id serial PRIMARY KEY,
course_name VARCHAR(80) NOT NULL
);

Agora, vamos inserir alguns dados na tabela ‘course’ usando a instrução INSERT INTO da seguinte forma:

INSERT INTO course(course_name)
VALORES
('Computador'),
('Mecânico'),
('Civil'),
('Elétrico');

Ilustre o resultado da instrução INSERT acima usando a seguinte instrução SQL e instantâneo.

selecionedo curso;

Agora, vamos inserir alguns dados na tabela ‘aluno’ usando a instrução INSERT INTO da seguinte forma:

INSERT INTO student(stud_name,stud_grade,stud_country,course_id)
VALORES
('Smith','A','EUA',1),
('Johnson','B','EUA',2),
('Williams','C','EUA',3),
('Jones','C','Canadá',1),
('Marrom','B','Canadá',2),
('Davis','A','Canadá',3),
('Aarnav','A','Índia',1),
('Aarush','B','Índia',2),
('Aayush','C','Índia',3),
('Abdul','C','UAE',1),
('Ahmed','A','EAU',3),
('Ying', 'A','China',1),
('Yue','B','China',2),
('Feng', 'C','China',3),
('Mian','C','Coreia do Sul',1),
('Fei','B','Coreia do Sul',2),
('Hong','A','Coreia do Sul',3);

Ilustre o resultado da instrução INSERT acima usando a seguinte instrução SQL e instantâneo.

selecionedo aluno;

"SELECT c.course_name AS nome do curso, s.stud_name AS nome do aluno"
FROM course c RIGHT JOIN student s ON c.course_id=s.course_id
ORDENAR POR 1;

Ilustre o resultado da declaração acima usando o seguinte instantâneo.

No exemplo acima, o instantâneo resultante tem cada linha como uma entrada separada para o curso correspondente ao curso do aluno.

Podemos concatenar os nomes dos alunos usando a função STRING_AGG() modificando a instrução SQL acima da seguinte forma:

SELECT
"crs.course_name AS nome do curso,
""string_agg(stud.stud_name, &39;, &39;) AS lista de alunos
"DO curso crs
JUNTE-SE ao grupo de alunos ON crs.course_id=stud.course_id
Agrupar por 1
ORDENAR POR 1;

Ilustre o resultado da declaração acima usando o seguinte instantâneo.

SELECT stud_grade, STRING_AGG(stud_name,', ') AS StudentsPerGrade
DE aluno
GROUP BY stud_grade
ORDENAR POR 1 ;

Ilustre o resultado da declaração acima usando o seguinte instantâneo.

No exemplo acima, o instantâneo resultante nos mostra a lista dos alunos concatenados por separador de vírgula com uma nota semelhante obtida.

"SELECT STRING_AGG(stud_name, &39;, &39;) AS student_names, stud_country"
DE aluno
GROUP BY stud_country;

Ilustre o resultado da declaração acima usando o seguinte instantâneo.

"

No exemplo acima, podemos ver que todos os alunos pertencentes ao mesmo país são agrupados e concatenados por um separador de vírgulas

Vantagens

  1. Podemos controlar a ordem do resultado usando a cláusula ORDER BY.
  2. A função STRING_AGG() do PostgreSQL retorna o resultado em formato string.
  3. Podemos usar a função STRING_AGG() para concatenar todas as strings e adicionar um símbolo delimitador ou separador entre elas.
  4. O PostgreSQL STRING_AGG() suporta vários tipos de símbolo delimitador ou separador e não inclui símbolo delimitador ou separador no final da string.

Conclusão

Esperamos que com o artigo acima você tenha entendido como usar a função PostgreSQL STRING_AGG() e como funciona a função PostgreSQL STRING_AGG(). Além disso, adicionamos vários exemplos da função STRING_AGG() do PostgreSQL para entendê-la em detalhes.

Ajude o desenvolvimento do site, compartilhando o artigo com os amigos!