Grupo Postgresql por

Grupo Postgresql Por



A cláusula group by do Postgresql é um recurso usado para unir/combinar as linhas da tabela que possuem os mesmos dados. Esta cláusula é usada principalmente para remover dados duplicados e manter a simultaneidade. Sempre que queremos calcular a soma, ou qualquer outro agregado como AVG, etc., esta cláusula group by é sempre usada, pois existem muitas cláusulas usadas no PostgreSQL. Mas existe uma hierarquia entre cada cláusula.

FROM > WHERE > “GROUP BY” > HAVING > SELECT > DISTINCT > ORDER BY > LIMIT

O funcionamento do PostgreSQL está dentro do “where” e da cláusula “Having”.







Sintaxe



SELECIONE a coluna

DE dumytable

ONDE [condições]

GRUPO POR primeira coluna, segunda coluna..

ORDER BY primeira coluna, segunda coluna.. ;

Exemplo 1



Para entender o conceito de grupo por função, usamos um exemplo aqui. Na tabela de passageiros, você pode ver que os sobrenomes são os mesmos para algumas pessoas. Cada nome que se assemelha a outro forma um grupo, e seu pagamento é somado coletivamente contra cada um do mesmo nome. Isso é elaborado no exemplo abaixo.





>> selecione lname, SUM (pagamento) do passageiro GROUP BY lname;

O sobrenome do passageiro é selecionado com o uso de uma função integrada ‘SUM’ que leva a coluna ‘payment’. E adicione o pagamento para as pessoas com o mesmo nome. Por exemplo, o salário de “Javed” e “saad” é adicionado. Já para “Malik” e “Shams”, é mencionado individualmente.



Da mesma forma, considere uma mesa “hospital”. Queremos agrupar a cidade pela idade. Neste exemplo, uma cidade existe mais de uma vez em uma coluna. Cada cidade é agrupada com o mesmo nome de cidade. As idades de cada grupo da cidade são somadas e formam uma única linha.

Hospital:

>> selecione cidade, SOMA (idade) do hospital GROUP BY city;

Exemplo 2

Alternativamente, se selecionarmos o sobrenome com o id da tabela passageira, o resultado será uma tabela diferente. Pois quando agrupamos as duas colunas, vai mostrar o nome de cada passageiro, pois o id de cada passageiro, mesmo tendo um sobrenome comum, é diferente. A soma é calculada em uma coluna separada, mas o pagamento de cada passageiro é mencionado na frente de seu nome porque o agrupamento de lname não é feito aqui.

Este é um exemplo da cláusula group by com várias colunas. Porque quando várias colunas são selecionadas para agrupamento, o valor resultante é alterado em comparação com o grupo por uma única tabela.

>> selecione id, lname, SUM (pagamento) do passageiro GROUP BY id, lname;

Na saída, você notará uma coisa: primeiro, todos os lname que são incomuns são exibidos e, em seguida, aqueles que são iguais são mencionados na tabela.

Exemplo 3

Este exemplo tem uma condição de junção e uma cláusula group by. Como ‘join’ é usado, significa que usamos duas tabelas aqui. Um é 'item' e o outro é 'pedidos'.

Unid:

Pedidos:

Usamos um método de concatenação (usado para unir duas strings) para unir os valores de duas colunas da tabela “itens” com “,” e nomear a coluna coletivamente como “descrição”. É opcional; você pode tomá-los separadamente. Nesta consulta, a palavra-chave “USING” identifica a coluna específica da outra tabela. O endereço da tabela de itens corresponde à coluna de endereço da tabela “pedidos”. Isso é feito fazendo uma junção entre duas tabelas. Como nos exemplos anteriores, ambas as colunas serão selecionadas pela cláusula GROUP BY.

>> selecione o nome || ',' || categoria como Descrição, endereço dos itens junção interna Pedidos USING (endereço) GROUP BY endereço, Descrição;

Você pode observar que 5 linhas serão selecionadas tendo o endereço dos itens combinados com o endereço dos Pedidos. E então, a coluna Descrição será formada em correspondência com a coluna Endereço.

Da mesma forma, há outro exemplo de concatenação com o fator idade em duas tabelas. Um é “passageiro” e o outro é “trabalhador”. A concatenação é entre o primeiro e o último nome. Ambos os nomes são separados pelo espaço entre dois nomes. Tomamos uma parte da mesa do trabalhador aqui.

Trabalhador:

A consulta funcionará para que o ponto onde o fname do trabalhador corresponda ao passageiro, a idade do passageiro, seja exibido na coluna de idade.

>> selecione fname || ‘ ‘ || passageiro.lnome como nome_completo, passageiro.idade do passageiro INNER join worker USING (fnome) GROUP BY nome_completo, passageiro.idade ORDER BY passageiro.idade;

Uma linha é formada. O full_name é criado unindo duas colunas com espaço, e o endereço é selecionado onde o fname do passageiro corresponde ao fname do trabalhador.

Exemplo 4

Este exemplo trata do uso de uma função count () para contar os ids da tabela “itens”. Isso é novamente agrupado pelo id da tabela.

>> Selecione id, COUNT (id) FROM items GROUP BY id;

As linhas na coluna id são divididas em grupos. Cada grupo é contado na coluna quantas vezes ele aparece na coluna. Na tabela resultante, uma nova coluna com o nome “count” é criada, e os valores da contagem são escritos aqui na frente de cada grupo.

Seu pgAdmin

Agora aplicamos alguns exemplos no lado do painel do PostgreSQL. Esses exemplos são diferentes em algum tipo porque formam uma linha de subtotal da coluna original quando qualquer um dos itens difere dos outros, portanto, o valor é retornado como NULL.

Considere o primeiro exemplo; aqui, criamos um nome de coluna “ALL” que combinou duas colunas. Um endereço e uma categoria. A coluna ‘ALL’ conta os valores em ambas as colunas coletivamente. A coluna de endereço é agrupada como “add” e a coluna de categoria é agrupada separadamente como “cat”. Como os nomes das colunas de ambas as tabelas usadas podem ser combinados entre si. Assim, cada coluna da respectiva tabela é acessada por um objeto específico.

A condição aplicada ao comando depende do id e do número do pedido. Onde ambos os números de id e pedido são os mesmos, os dados são buscados. Da mesma forma, uma condição adicional também é adicionada para o nome.

>> SELECT o.address, category, count (*) AS “ALL”, GROUPING(o.address) AS “add” , GROUPING (category ) AS “cat” FROM items I, orders o where i.order_no = o. order_id AND i.address= 'Lahore' GROUP BY CUBE (o.address, category) ORDER BY 1, 2;

Para a cidade de Lahore, uma categoria é selecionada. Existem 4 possibilidades. Às vezes, o brinquedo está presente, mas não o endereço. E vice versa. Mas existe um tempo em que tanto a categoria quanto o endereço estão presentes.

Agora, se mudarmos a condição do nome de uma tabela e trocarmos a tabela por outra. “Items.address” é substituído pelo “order.address”, então o resultado é diferente.

Conclusão

A cláusula “Postgresql group by” é usada para aplicar qualquer operador agregado aos dados coletivos. Este artigo usa cláusula group by com função de contagem, junções e seleção e agrupamento de várias colunas. Tenho certeza que este tutorial será o melhor meio de compreensão para os leitores.