Pular para o conteúdo

Função LISTAGG: Agrupamento de dados no Oracle com exemplos

Função LISTAGG

A função LISTAGG (list aggregate | lista agregada), é uma função SQL de grupo específica do Oracle, que agrupa os dados na mesma linha dentro de uma instrução SELECT, você pode utilizá-la sozinha para produzir conjuntos de dados agrupados por linhas simples, ou em conjunto com a função GROUP BY, abaixo alguns exemplos.

Imagine um SELECT comum na tabela EMPLOYEES.

Sql_1

Agora vamos montar um relatório que liste em uma única linha, o nome completo dos empregados no padrão americano (sobrenome, nome) separado por ‘; ’ juntamente com a data de contratação do empregado mais antigo. Neste caso ficaria assim.

Sql_2

LISTAGG + GROUP BY

Como falamos no inicio do artigo, também podemos utilizar a função LISTAGG juntamente com a função GROUP BY. Imagine que precisamos montar um relatório com o ID dos departamentos em uma coluna e na coluna seguinte o nome dos empregados separados por ‘;’.

Sql_3

LISTAGG + OVER

Ao utilizar a função LISTAGG juntamente com a função OVER, é possível criar relatórios analíticos com grupos e subgrupos de dados. Imagine o cenário onde você precise criar um relatório onde mostre o código do departamento, a data de contratação de todos os empregados que foram contratados antes de 01 de setembro de 2003, além disso, é preciso criar uma terceira coluna que mostre uma lista de todos os outros funcionários que também foram contratados antes de 01 de setembro de 2003 e pertencem ao mesmo departamento.

Sql_4

É isso aí, esta função eu particularmente não conhecia, mas alguns dias atrás lendo a Oracle Magazine, encontrei um artigo que falava desta função juntamente com outras e achei interessante dar uma estudada nesta função, fiz isso e tenho o enorme prazer em compartilhar aqui o que acabei aprendendo.

Forte Abraço e até a próxima!

Quão útil foi este post ?

Clique em uma estrela para classificar o post

nota média 5 / 5. Contagem de votos: 32

Sem votos ! Seja o primeiro a classificar !

Marcações:

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

plugins premium WordPress