Oracle Group by

Oracle Group by
Você precisa consultar informações de diferentes tabelas ou condições ao trabalhar com bancos de dados relacionais. Você precisará então combinar os resultados em um determinado conjunto para uso pelo aplicativo.Uma das cláusulas mais valiosas ao consultar informações da tabela é a cláusula do grupo por. Ele permite agrupar as linhas de um determinado resultado em um conjunto de valores com base em uma determinada condição. Isso facilita a partição de informações relacionadas em um determinado conjunto.Por exemplo, você pode usar o grupo por cláusula para dividir as informações do funcionário com base em seu departamento.

Este tutorial ensinará como usar o grupo por cláusula nos bancos de dados Oracle.

Grupo Oracle por declaração

O grupo por cláusula é usado em uma instrução SELECT para dividir os resultados em vários grupos. A cláusula retornará uma linha por grupo.

Na maioria dos casos, você geralmente encontrará o grupo usado em conjunto com funções agregadas, como soma, avg, max, etc. Nesse cenário, a cláusula agrupa os dados em partições correspondentes e, em seguida, a função agregada é aplicada a cada grupo.

Podemos demonstrar que a sintaxe do grupo por cláusula é mostrada no trecho abaixo:

Selecione col_list
De table_name
Grupo por expressão_1, expressão_2,… expressão_n;

Observe que o grupo por cláusula vem após a cláusula de From.

Em alguns casos, você pode incluir a cláusula onde limitar ainda mais o escopo da consulta, como demonstrado na consulta abaixo:

Selecione col_list
De table_name
Onde condição
Grupo por expressão_1, expressão_2,… expressão_n;

As linhas são então agrupadas com base nas condições especificadas nas expressões. Observe que a cláusula deve incluir apenas as colunas de agrupamento.

No entanto, o Oracle permite que você execute um agrupamento multinível usando a palavra -chave Rollup, conforme ilustrado no snippet abaixo:

Selecione col_list
De table_name
Grupo por rollup (expressão_1, expressão_2,… expressão_n);

Exemplo de uso

A seguir, é apresentado um exemplo usado para demonstrar o uso do grupo por cláusula nos bancos de dados Oracle.

Use seus dados disponíveis.

Suponha que tenhamos uma tabela com as informações como mostrado:

Exemplo 1 - Grupo Básico por Uso da Cláusula

O exemplo seguinte consulta demonstra como usar o grupo por cláusula para agrupar as linhas resultantes com base no departamento_id.

Selecione First_Name, departamento_id do grupo de funcionários por departamento_id, primeiro_name;

Nesse caso, a declaração deve ordenar os resultados dos dados consultados com base nas colunas departament_id e primeiro_name.

A saída resultante está como estabelecido abaixo:

Exemplo 2 - Usando o grupo por uma cláusula onde

No exemplo abaixo, descrevemos um trenó de código demonstrando como usar o grupo por cláusula em conjunto com uma cláusula onde.

Selecione First_Name, departamento_id de funcionários onde departamento_id> = 100 Grupo por departamento_id, primeiro_name;

Nesse caso, a declaração começa selecionando as colunas First_Name e Department_ID da tabela. Em seguida, filtramos apenas para as linhas cujo valor de departamento_id é maior ou igual a 100.

Finalmente, aplicamos o grupo por cláusula, conforme demonstrado pela tabela resultante abaixo:

Exemplo 3 - Usando o grupo por cláusula com uma função agregada

Como afirmado, podemos usar o grupo por função com uma função agregada. Um exemplo de demonstração é fornecido abaixo:

Selecione First_Name, departamento_id, soma (salário) do grupo de funcionários por departamento_id, primeiro_name;

A tabela resultante:

Exemplo 3 - Usando o grupo por cláusula com rollup

O exemplo a seguir demonstra como usar a palavra -chave Rollup para determinar a comissão para cada funcionário.

Selecione Funcionário_id, Salário, Sum (Comissário_pct * Salário)
De funcionários
Onde comission_pct> = 0
Grupo por rollup (funcionário_id, salário);

Resultados:

Conclusão

Neste post, exploramos o uso do grupo por cláusula nos bancos de dados Oracle para agrupar um conjunto de linhas com base em uma determinada expressão.