Funções agregadas de strings SQL

Funcoes Agregadas De Strings Sql



Se você já lidou com bancos de dados SQL, provavelmente está familiarizado com funções agregadas. Eles são essencialmente um conjunto de funções que realizam cálculos em um conjunto de valores e retornam um único resultado.

Um exemplo inclui funções como SUM(), AVG(), COUNT(), MAX e MIN(). No entanto, uma coisa que você notará sobre as funções agregadas em SQL é que elas são voltadas para operações numéricas.

Mas você sabia que existem funções agregadas que lidam com valores de string? Neste tutorial, veremos essas funções, como funcionam e como podemos usá-las em nossos bancos de dados.







NOTA: É bom observar que a maioria das funções discutidas nesta postagem não fazem parte do SQL padrão. Como resultado, eles são uma extensão de vários mecanismos de banco de dados, como PostgreSQL, SQL Server, etc.



O que são funções agregadas de strings?

Funções agregadas de strings são um conjunto de funções que executam operações de agregação em um conjunto de strings dentro de um grupo ou linhas e retornam um único resultado.



Usamos essas funções principalmente com a cláusula GROUP BY para agrupar as linhas com base em uma determinada coluna e então agregar as strings em cada grupo.





Algumas funções comuns de agregação de strings incluem:

  • GROUP_CONCAT() – PostgreSQL e MySQL
  • STRING_AGG – SQL Server
  • ARRAY_AGG – PostgreSQL
  • LISTAGG – Oráculo

Vamos explorar cada função e o que ela oferece.



GRUPO_CONCAT()

A função GROUP_CONCAT() é suportada pelos bancos de dados PostgreSQL e MySQL. Ele nos permite concatenar os valores de várias linhas em uma única string.

Suponha que temos uma tabela de “funcionários” como segue:

CREATE TABLE funcionários (
Employee_id INT AUTO_INCREMENT CHAVE PRIMÁRIA,
nome_nome VARCHAR(50),
sobrenome VARCHAR(50),
departamento VARCHAR(50)
);

INSERT INTO funcionários (nome, sobrenome, departamento) VALORES
('Alice', 'Smith', 'Recursos Humanos'),
('Bob', 'Johnson', 'Marketing'),
('Charlie', 'Wilson', 'Finanças'),
('David', 'Marrom', 'Vendas'),
('Eva', 'Davis', 'Engenharia');

Saída:

Se quisermos determinar o nome completo do funcionário pegando o nome e concatenando com o sobrenome, podemos usar a função GROUP_CONCAT() conforme demonstrado no exemplo a seguir:

SELECIONAR
departamento,
GROUP_CONCAT(nome_nome, '', sobrenome) AS nome_completo
DE
funcionários
Agrupar por
departamento;

Neste caso, usamos a função para concatenar as strings das colunas “primeiro_nome” e “sobrenome”, e uma string vazia para adicionar um espaço aos nomes.

Contém uma lista de funcionários em cada departamento.

STRING_AGG

Esta função é semelhante à função GROUP_CONCAT(), mas só é suportada no banco de dados SQL Server.

Um exemplo de uso é o seguinte:

SELECIONAR
departamento,
STRING_AGG(nome, sobrenome, ' ') AS nome completo
DE
funcionários
Agrupar por
departamento;

Isso executa a concatenação de strings nas colunas especificadas como o espaço como delimitador.

ARRAY_AGG

A função ARRAY_AGG está disponível apenas no banco de dados PostgreSQL. Isso nos permite agregar os valores em um único array.

Um exemplo é o seguinte:

SELECIONAR
departamento,
ARRAY_AGG(nome_nome) AS lista_defuncionários
DE
funcionários
Agrupar por
departamento;

Isso deve agregar o nome do funcionário como uma matriz.

LISTAGG()

A função LISTAGG() está disponível apenas no banco de dados Oracle. Ele nos permite concatenar os valores em uma única string com um delimitador especificado.

Um exemplo é o seguinte:

SELECT departamento, LISTAGG(nome_nome, sobrenome,  ' ') DENTRO DO GRUPO (ORDER BY nome_funcionário ASC) AS funcionários
DE funcionários
AGRUPAR POR departamento;

Isso concatena os nomes dos funcionários e o delimitador especificado.

Conclusão

Neste tutorial, aprendemos sobre as funções agregadas de strings que nos permitem fornecer uma lista de valores de strings e executar uma operação em um único valor de string resultante.