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:
- expression: Esta é uma cadeia de caracteres que é qualquer expressão válida.
- 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?
- 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.
- O PostgreSQL STRING_AGG() nos retorna o resultado em tipo string.
- 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)
('Elétrico');
VALORES
('Computador'),
('Mecânico'),
('Civil'),
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)
('Hong','A','Coreia do Sul',3);
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),
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"
ORDENAR POR 1;
FROM course c RIGHT JOIN student s ON c.course_id=s.course_id
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
ORDENAR POR 1;
"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
Ilustre o resultado da declaração acima usando o seguinte instantâneo.
SELECT stud_grade, STRING_AGG(stud_name,', ') AS StudentsPerGrade
ORDENAR POR 1 ;
DE aluno
GROUP BY stud_grade
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"
GROUP BY stud_country;
DE aluno
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
- Podemos controlar a ordem do resultado usando a cláusula ORDER BY.
- A função STRING_AGG() do PostgreSQL retorna o resultado em formato string.
- Podemos usar a função STRING_AGG() para concatenar todas as strings e adicionar um símbolo delimitador ou separador entre elas.
- 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.