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

SQL Select Distinto


A consulta SQL DISTINCT é usada para buscar valores exclusivos das tabelas usando a instrução SELECT no SQL.

Pode ocorrer uma situação quando você deseja buscar os valores exclusivos das tabelas, mas valores duplicados também estão presentes dentro da tabela. Nesse caso, você deve usar a consulta SELECT DISTINCT para eliminar valores duplicados e buscar valores exclusivos da tabela.

Sintaxe da instrução SELECT DISTINCT:
SELECT DISTINCT columnname1, columnname2 FROM table_name;

Considere as tabelas de funcionários existentes que possuem os seguintes registros:
EMPLOYEEID FIRST_NAME LAST_NAME SALÁRIO CIDADE DEPARTAMENTO GERENTE
1001 VAIBHAVI MISHRA 65500 PUNE ORACLE 1
1002 VAIBHAV SHARMA 60.000 NOIDA ORACLE 1
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 TESTE 4
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

Vamos entender o SELECT DISTINCT com a ajuda de um exemplo.

Exemplo 1: Escreva uma consulta para buscar detalhes do funcionário cujo salário do funcionário seja maior que 55.000 sem usar a palavra-chave DISTINCT.
SELECT * FROM EMPLOYEES WHERE SALARY > 55000;

Na declaração acima, buscamos os detalhes do funcionário da tabela do funcionário cujo salário do funcionário é maior que 55.000, incluindo os valores duplicados.

A saída para a seguinte instrução:
EMPLOYEEID FIRST_NAME LAST_NAME SALÁRIO CIDADE DEPARTAMENTO GERENTE
1001 VAIBHAVI MISHRA 65.000 PUNE ORACLE 1
1002 VAIBHAV SHARMA 60.000 NOIDA ORACLE 1
2001 PRAQUI SHARMA 55500 CHANDIGARH ORACLE 1
2002 BHAVESH JAIN 65500 PUNE FMW 2
3001 PRANOTI SHENDE 55500 PUNE JAVA 3
3003 DEEPAM JAUHARI 58500 MUMBAI JAVA 3
4001 RAJESH GOUD 60500 MUMBAI TESTE 4
4003 RUCHIKA AGARWAL 60.000 DÉLHI ORACLE 1
5001 ARQUIVO SHARMA 55500 DÉLHI TESTE 4

O resultado acima mostra que buscamos os detalhes dos funcionários, incluindo valores duplicados.

Exemplo 2: Escreva uma consulta para exibir o salário do funcionário da tabela de funcionários cujo salário do funcionário seja maior que 55.000 usando a palavra-chave DISTINCT.
SELECT DISTINCT (SALARY) FROM EMPLOYEES WHERE SALARY > 55000;

Na declaração acima, estamos recuperando o salário do funcionário da tabela do funcionário cujo salário é maior que 55000, onde estamos eliminando os valores duplicados. O salário distinto exibirá o salário exclusivo da tabela do funcionário.

A saída para a seguinte instrução:
SALÁRIO
65.000
60.000
55500
65500
58500
60500

No primeiro exemplo, buscamos os detalhes do funcionário cujo salário é maior que 55.000. O resultado da consulta inclui valores duplicados. Mas no segundo exemplo, executamos a mesma consulta para exibir o salário do funcionário cujo salário é maior que 55.000. A consulta exibe o resultado eliminando os valores duplicados porque usamos a palavra-chave DISTINCT seguida da coluna salário.

Exemplo 3: Escreva uma consulta para exibir a cidade e o salário do funcionário da tabela de funcionários sem usar uma palavra-chave distinta.
SELECT SALARY, CITY FROM EMPLOYEES;

Exibimos o salário do funcionário e o nome da cidade da tabela do funcionário na instrução acima, incluindo valores duplicados.

A saída para a seguinte instrução:
SALÁRIO CIDADE
65500 PUNE
60.000 NOIDA
50500 JAIPUR
55500 CHANDIGARH
65500 PUNE
50.000 MUMBAI
55500 PUNE
50500 JAIPUR
58500 MUMBAI
60500 MUMBAI
54500 NOIDA
60.000 DÉLHI
55500 DÉLHI

Exemplo 4: Escreva uma consulta para exibir a cidade e o salário do funcionário da tabela de funcionários usando palavras-chave distintas.

SELECIONE SALÁRIO DISTINTO, CIDADE DOS FUNCIONÁRIOS;

Buscamos o salário e a cidade do funcionário na tabela de funcionários na declaração acima. Mas buscamos um valor único que não se repete em toda a tabela usando a palavra-chave DISTINCT.

A saída para a seguinte instrução:
SALÁRIO CIDADE
65500 PUNE
60.000 NOIDA
50500 JAIPUR
55500 CHANDIGARH
50.000 MUMBAI
55500 PUNE
58500 MUMBAI
60500 MUMBAI
54500 NOIDA
60.000 DÉLHI
55500 DÉLHI

Exemplo 5: Escreva uma consulta para exibir o sobrenome e o departamento de um funcionário da tabela do funcionário onde o nome do departamento começa com 'O' sem usar a palavra-chave DISTINCT;
SELECT LAST_NAME, DEPARTMENT FROM EMPLOYEES WHERE DEPARTMENT LIKE 'O%';

Na instrução acima, buscamos sobrenomes de funcionários, departamentos da tabela de funcionários cujos nomes de departamentos começam com 'O', incluindo valores duplicados.

A saída para a seguinte instrução:
LAST_NAME DEPARTAMENTO
MISHRA ORACLE
SHARMA ORACLE
SHARMA ORACLE
AGARWAL ORACLE

Apenas quatro registros são exibidos dos funcionários cujo departamento começa com 'O'.

Exemplo 6: Escreva uma consulta para exibir o sobrenome e o departamento de um funcionário da tabela do funcionário onde o nome do departamento começa com 'O' usando a palavra-chave DISTINCT;
SELECT DISTINCT LAST_NAME, DEPARTMENT FROM EMPLOYEES WHERE DEPARTMENT LIKE 'O%';

Usamos a mesma consulta no exemplo 5, apenas adicionamos a palavra-chave DISTINCT logo antes do nome das colunas que exibirá valores exclusivos da tabela do funcionário cujo nome do departamento começa com 'O'.

A saída para a seguinte instrução:
LAST_NAME DEPARTAMENTO
MISHRA ORACLE
SHARMA ORACLE
AGARWAL ORACLE

A mesma consulta que executamos na consulta acima, adicionamos a palavra-chave DISTINCT logo antes das colunas. A saída que obtemos difere do exemplo acima porque a exibição do resultado tem valores exclusivos.

Exemplo 7: Escreva uma consulta para contar o salário do funcionário da tabela de funcionários sem usar uma palavra-chave distinta.
SELECT COUNT (SALARY) AS TOTAL SALARY FROM EMPLOYEES;

Na declaração acima, contamos o número total de salários da tabela do funcionário, incluindo valores duplicados.

A saída para a seguinte instrução:
SALÁRIO TOTAL
13

Exemplo 8: Escreva uma consulta para contar o salário do funcionário da tabela de funcionários usando a palavra-chave distinta.
SELECT COUNT(DISTINCT SALARY) AS TOTAL SALARY FROM EMPLOYEES;

No extrato acima, contamos o total de salários da tabela do funcionário, excluindo valores duplicados.

A saída para a seguinte instrução:
SALÁRIO TOTAL
8