Database
 sql >> Base de Dados >  >> RDS >> Database

Como usar a cláusula GROUP BY no SQL


Neste artigo SQL, aprenderemos sobre a cláusula GROUP BY e como usá-la no SQL. Também discutiremos o uso da cláusula GROUP BY com a cláusula WHERE.

O que é a cláusula GROUP BY?


A cláusula GROUP BY é uma cláusula SQL usada na instrução SELECT para gerenciar os mesmos registros de uma coluna do grupo usando funções SQL.

Sintaxe da cláusula GROUP BY:
SELECT columnname1, columnname2, columnname3 FROM tablename GROUP BY columnname;

Podemos usar várias colunas da tabela na cláusula GROUP BY.

Existem alguns passos, temos que aprender como usar a cláusula GROUP BY na consulta SQL:

1. Crie um novo banco de dados ou use um banco de dados existente selecionando o banco de dados usando a palavra-chave USE seguida do nome do banco de dados.

2. Crie uma nova tabela dentro do banco de dados selecionado, ou você pode usar uma tabela já criada.

3. Se a tabela for recém-criada, insira os registros no banco de dados recém-criado usando a consulta INSERT e visualize os dados inseridos usando a consulta SELECT sem a cláusula GROUP BY.

4. Agora, estamos prontos para usar a cláusula GROUP BY nas consultas SQL.

Etapa 1:crie um novo banco de dados ou use um banco de dados já criado.

Já criei um banco de dados. Usarei meu nome de banco de dados criado existente, Empresa.
USE Company;

Empresa é o nome do banco de dados.

Quem não criou um banco de dados segue a consulta abaixo para criar o banco de dados:
CREATE DATABASE database_name;

Após criar o banco de dados, selecione o banco de dados usando a palavra-chave USE seguida do nome do banco de dados.

Etapa 2:crie uma nova tabela ou use uma tabela já existente:

Já criei uma tabela. Usarei a tabela existente chamada Employees.

Para criar as novas tabelas, siga a sintaxe CREATE TABLE abaixo:
CREATE TABLE table_name(

columnname1 datatype(column size),

columnname2 datatype(column size),

columnname3 datatype(column size)

);

Etapa 3:insira os registros na tabela recém-criada usando a consulta INSERT e visualize os registros usando a consulta SELECT.

Use a seguinte sintaxe para inserir novos registros na tabela:
INSERT INTO table_name VALUES(value1, value2, value3);

Use a seguinte sintaxe para visualizar os registros da tabela:
SELECT * FROM table_name;

A consulta a seguir exibirá os registros de Funcionários:
SELECT * FROM Employees;

A saída da consulta SELECT acima é:
EMPLOYEEID FIRST_NAME LAST_NAME SALÁRIO CIDADE DEPARTAMENTO GERENTE
1001 VAIBHAVI MISHRA 65500 PUNE ORACLE 1
1002 VAIBHAV SHARMA 60.000 NOIDA C# 5
1003 NIQUIL VANI 50500 JAIPUR FMW 2
2001 PRAQUI SHARMA 55500 CHANDIGARH ORACLE 1
2002 BHAVESH JAIN 65500 PUNE FMW 2
2003 RUCHIKA JAIN 50.000 MUMBAI C# 5
3001 PRANOTI SHENDE 55500 PUNE JAVA 3
3002 ANUJA QUERER 50500 JAIPUR FMW 2
3003 DEEPAM JAUHARI 58500 MUMBAI JAVA 3
4001 RAJESH GOUD 60500 MUMBAI TESTE 4
4002 ASHWINI BOLSA 54500 NOIDA JAVA 3
4003 RUCHIKA AGARWAL 60.000 DÉLHI ORACLE 1
5001 ARQUIVO SHARMA 55500 DÉLHI TESTE 4
5002 SANKET CHAUHAN 70.000 HYDERABAD JAVA 3
5003 ROSHAN NEHTE 48500 CHANDIGARH C# 5
6001 RAHUL NIKAM 54500 BANGALORE TESTE 4
6002 ATISH JADHAV 60500 BANGALORE C# 5
6003 NIKITA INGALE 65.000 HYDERABAD ORACLE 1

Etapa 4:estamos prontos para usar a cláusula GROUP BY nas consultas

Vamos agora mergulhar fundo na cláusula GROUP BY com a ajuda de exemplos

Exemplo 1: Escreva uma consulta para exibir o grupo de registros de funcionários por cidade.
SELECT * FROM EMPLOYEES GROUP BY CITY;

A consulta acima exibe os registros dos funcionários onde um funcionário da mesma cidade será considerado um grupo. Por exemplo, se houver 10 registros de funcionários na tabela em que 3 são da cidade de Pune, 3 são da cidade de Mumbai, 2 são de Hyderabad e Bangalore, a consulta acima agrupará o funcionário da cidade de Pune o funcionário da cidade de Mumbai como um registro e assim por diante .

A saída da consulta acima:
EMPLOYEEID FIRST_NAME LAST_NAME SALÁRIO CIDADE DEPARTAMENTO GERENTE
6001 RAHUL NIKAM 54500 BANGALORE TESTE 4
2001 PRAQUI SHARMA 55500 CHANDIGARH ORACLE 1
4003 RUCHIKA AGARWAL 60.000 DÉLHI ORACLE 1
5002 SANKET CHAUHAN 70.000 HYDERABAD JAVA 3
1003 NIQUIL VANI 50500 JAIPUR FMW 2
2003 RUCHIKA JAIN 50.000 MUMBAI C# 5
1002 VAIBHAV SHARMA 60.000 NOIDA C# 5
1001 VAIBHAVI MISHRA 65500 PUNE ORACLE 1

Como podemos ver que os registros dos funcionários são agrupados por cidade, e os registros são exibidos em ordem crescente por padrão.

Exemplo 2: Escreva uma consulta para exibir o grupo de registros dos funcionários por salário em ordem decrescente.
SELECT * FROM EMPLOYEES GROUP BY SALARY DESC; 

A consulta acima exibe os registros dos funcionários onde funcionários com o mesmo salário serão considerados um grupo e os registros serão exibidos em ordem decrescente.

A saída da consulta acima:
EMPLOYEEID FIRST_NAME LAST_NAME SALÁRIO CIDADE DEPARTAMENTO GERENTE
5002 SANKET CHAUHAN 70.000 HYDERABAD JAVA 3
1001 VAIBHAVI MISHRA 65500 PUNE ORACLE 1
6003 NIKITA INGALE 65.000 HYDERABAD ORACLE 1
4001 RAJESH GOUD 60500 MUMBAI TESTE 4
1002 VAIBHAV SHARMA 60.000 NOIDA C# 5
3003 DEEPAM JAUHARI 58500 MUMBAI JAVA 3
2001 PRAQUI SHARMA 55500 CHANDIGARH ORACLE 1
4002 ASHWINI BOLSA 54500 NOIDA JAVA 3
1003 NIQUIL VANI 50500 JAIPUR FMW 2
2003 RUCHIKA JAIN 50.000 MUMBAI C# 5
5003 ROSHAN NEHTE 48500 CHANDIGARH C# 5

Como podemos ver, os registros dos funcionários são agrupados por salário, e os registros são exibidos em ordem decrescente, conforme mencionamos desc no final.

Exemplo 3: Escreva uma consulta para exibir o grupo de registros dos funcionários por salário e cidade.
SELECT * FROM EMPLOYEES GROUP BY SALARY, CITY;

A consulta acima mostra os registros dos funcionários onde funcionários com o mesmo salário e cidade serão considerados um grupo.

Por exemplo, suponha que a tabela tenha 10 registros de funcionários. De 10 funcionários, o salário de 2 funcionários e a cidade combinam com outros dois funcionários e o restante de seis funcionários, o salário e a cidade são incomparáveis, então os 6 funcionários serão considerados como 6 grupos separados, e 2 funcionários que combinarem com outros 2 funcionários serão considerados como um grupo . Em suma, serão formados 8 grupos.

A saída da consulta acima:
EMPLOYEEID FIRST_NAME LAST_NAME SALÁRIO CIDADE DEPARTAMENTO GERENTE
5003 ROSHAN NEHTE 48500 CHANDIGARH C# 5
2003 RUCHIKA JAIN 50.000 MUMBAI C# 5
1003 NIQUIL VANI 50500 JAIPUR FMW 2
6001 RAHUL NIKAM 54500 BANGALORE TESTE 4
4002 ASHWINI BOLSA 54500 NOIDA JAVA 3
2001 PRAQUI SHARMA 55500 CHANDIGARH ORACLE 1
5001 ARQUIVO SHARMA 55500 DÉLHI TESTE 4
3001 PRANOTI SHENDE 55500 PUNE JAVA 3
3003 DEEPAM JAUHARI 58500 MUMBAI JAVA 3
4003 RUCHIKA AGARWAL 60.000 DÉLHI ORACLE 1
1002 VAIBHAV SHARMA 60.000 NOIDA C# 5
6002 ATISH JADHAV 60500 BANGALORE C# 5
4001 RAJESH GOUD 60500 MUMBAI TESTE 4
6003 NIKITA INGALE 65.000 HYDERABAD ORACLE 1
1001 VAIBHAVI MISHRA 65500 PUNE ORACLE 1
5002 SANKET CHAUHAN 70.000 HYDERABAD JAVA 3

Como podemos ver, os registros dos funcionários são agrupados por salário e cidade, e os registros são exibidos em ordem crescente por padrão.

Exemplo 4: Escreva uma consulta para exibir os registros dos funcionários por cidade e departamento.
SELECT * FROM EMPLOYEES GROUP BY CITY, DEPARTMENT;

A consulta acima exibe os registros dos funcionários onde os funcionários estão na mesma cidade, e o departamento será considerado um grupo.

A saída da consulta acima:
EMPLOYEEID FIRST_NAME LAST_NAME SALÁRIO CIDADE DEPARTAMENTO GERENTE
6002 ATISH JADHAV 60500 BANGALORE C# 5
6001 RAHUL NIKAM 54500 BANGALORE TESTE 4
5003 ROSHAN NEHTE 48500 CHANDIGARH C# 5
2001 PRAQUI SHARMA 55500 CHANDIGARH ORACLE 1
4003 RUCHIKA AGARWAL 60.000 DÉLHI ORACLE 1
5001 ARQUIVO SHARMA 55500 DÉLHI TESTE 4
5002 SANKET CHAUHAN 70.000 HYDERABAD JAVA 3
6003 NIKITA INGALE 65.000 HYDERABAD ORACLE 1
1003 NIQUIL VANI 50500 JAIPUR FMW 2
2003 RUCHIKA JAIN 50.000 MUMBAI C# 5
3003 DEEPAM JAUHARI 58500 MUMBAI JAVA 3
4001 RAJESH GOUD 60500 MUMBAI TESTE 4
1002 VAIBHAV SHARMA 60.000 NOIDA C# 5
4002 ASHWINI BOLSA 54500 NOIDA JAVA 3
2002 BHAVESH JAIN 65500 PUNE FMW 2
3001 PRANOTI SHENDE 55500 PUNE JAVA 3
1001 VAIBHAVI MISHRA 65500 PUNE ORACLE 1

Como podemos ver, os registros dos funcionários são agrupados por cidade e departamento, e os registros são exibidos em ordem crescente por padrão.

Exemplo 5: Escreva uma consulta para contar a lista de funcionários em cada departamento da tabela de funcionários.
SELECT DEPARTMENT, COUNT(DEPARTMENT) FROM EMPLOYEES GROUP BY DEPARTMENT;

A consulta acima exibe a contagem de funcionários em cada grupo de departamentos por departamento. Assim como seis funcionários trabalham no departamento de RH, cinco trabalham em outro departamento.

A saída da consulta acima:
DEPARTAMENTO CONTAGEM(DEPARTAMENTO)
C# 4
FMW 3
JAVA 4
ORACLE 4
TESTE 3

Como podemos ver, quatro funcionários trabalham no Departamento de C#, três trabalham no Departamento de FMW, etc.

Exemplo 6: Escreva uma consulta para contar a lista de funcionários de cada cidade da tabela de funcionários.
SELECT CITY, COUNT(CITY) FROM EMPLOYEES GROUP BY CITY;

A consulta acima exibe a contagem de funcionários em cada grupo de cidades por cidade. Como três funcionários trabalham na cidade de Pune, quatro trabalham em outra cidade e assim por diante.

A saída da consulta acima:
CIDADE COUNT(CITY)
BANGALORE 2
CHANDIGARH 2
DÉLHI 2
HYDERABAD 2
JAIPUR 2
MUMBAI 3
NOIDA 2
PUNE 3

Como podemos ver, dois funcionários trabalham na cidade de Bangalore, três trabalham na cidade de Mumbai e assim por diante.

Exemplo 7: Escreva uma consulta para somar o grupo salarial do funcionário pela cidade.
SELECT CITY, SUM(SALARY) AS SALARY FROM EMPLOYEES GROUP BY CITY;

O acima é usado para somar os salários dos funcionários agrupados pelo nome da cidade. Por exemplo, para funcionários da mesma cidade, seu salário será a soma e considerado um grupo. Usamos a função de soma agregada seguida pela coluna de salário para adicionar o salário.

A saída da consulta acima:
CIDADE SALÁRIO
BANGALORE 115000
CHANDIGARH 104000
DÉLHI 115500
HYDERABAD 135000
JAIPUR 101000
MUMBAI 169000
NOIDA 114500
PUNE 186500

Como podemos ver, o salário da soma da cidade de Bangalore é 115.000, o salário da soma da cidade de Chandigarh é 104.000, que é a adição de diferentes salários de funcionários, mas da cidade, a mesma abordagem é usada para cada cidade.

Exemplo 8: Escreva uma consulta para encontrar o salário mínimo de cada departamento.
SELECT DEPARTMENT, MIN(SALARY) FROM EMPLOYEES GROUP BY DEPARTMENT;

A consulta acima é usada para encontrar o salário mínimo do funcionário de cada departamento. O salário de um dos funcionários do departamento de Java é de 54.500, que é o mais baixo de todo o departamento de Java. O mesmo 48500 é o menor salário pago ao funcionário no departamento de C#.

A saída da consulta acima:
DEPARTAMENTO MIN(SALÁRIO)
C# 48500
FMW 50500
JAVA 54500
ORACLE 55500
TESTE 54500

Como podemos ver, 50.500 é o menor salário pago a um dos funcionários do departamento FMW, 55.500 é o menor salário pago a um dos funcionários do departamento ORACLE.

Exemplo 9: Escreva uma consulta para encontrar o salário mínimo de cada cidade.
SELECT CITY, MAX(SALARY) FROM EMPLOYEES GROUP BY CITY;

A consulta acima é usada para encontrar o salário máximo de cada cidade. Um dos funcionários do salário da cidade de Pune é 65.500, que é o mais alto em toda a cidade de Pune, mesmo 60.500 é o salário mais alto pago ao funcionário na cidade de Mumbai.

A saída da consulta acima:
CIDADE MAX(SALÁRIO)
BANGALORE 60500
CHANDIGARH 55500
DÉLHI 60.000
HYDERABAD 70.000
JAIPUR 50500
MUMBAI 60500
NOIDA 60.000
PUNE 65500

Como podemos ver, 50.500 é o maior salário pago a um dos funcionários da cidade de Jaipur, 55.500 é o maior salário pago a um dos funcionários da cidade de Chandigarh.