Database
 sql >> Base de données >  >> RDS >> Database

SQL Select Distinct

La requête SQL DISTINCT est utilisée pour extraire des valeurs uniques des tables à l'aide de l'instruction SELECT dans le SQL.

Il peut arriver que vous souhaitiez extraire les valeurs uniques des tables, mais que des valeurs en double soient également présentes dans la table. Dans ce cas, vous devez utiliser la requête SELECT DISTINCT pour éliminer les valeurs en double et récupérer les valeurs uniques de la table.

Syntaxe de l'instruction SELECT DISTINCT :

SELECT DISTINCT columnname1, columnname2 FROM table_name;

Considérez les tables d'employés existantes qui ont les enregistrements suivants :

ID EMPLOYEE FIRST_NAME LAST_NAME SALAIRE VILLE DÉPARTEMENT MANAGERID
1001 VAIBHAVI MISHRA 65500 PUNE ORACLE 1
1002 VAIBHAV SHARMA 60000 NOÏDA ORACLE 1
1003 NIKHIL VANI 50500 JAIPUR FMW 2
2001 PRACHI SHARMA 55500 CHANDIGAR ORACLE 1
2002 BHAVESH JAIN 65500 PUNE FMW 2
2003 RUCHIKA JAIN 50000 Bombay TEST 4
3001 PRANOTI SHENDE 55500 PUNE JAVA 3
3002 ANUJA WANRE 50500 JAIPUR FMW 2
3003 DEEPAM JAUHARI 58500 Bombay JAVA 3
4001 RAJESH GOUD 60500 Bombay TEST 4
4002 ASHWINI BAGHAT 54500 NOÏDA JAVA 3
4003 RUCHIKA AGARWAL 60000 DELHI ORACLE 1
5001 ARCHIT SHARMA 55500 DELHI TEST 4

Comprenons le SELECT DISTINCT à l'aide d'un exemple.

Exemple 1 : Rédigez une requête pour récupérer les détails des employés dont le salaire est supérieur à 55 000 sans utiliser le mot-clé DISTINCT.

SELECT * FROM EMPLOYEES WHERE SALARY > 55000;

Dans la déclaration ci-dessus, nous avons extrait les détails de l'employé de la table de l'employé dont le salaire est supérieur à 55 000, y compris les valeurs en double.

Le résultat de l'instruction suivante :

ID EMPLOYEE FIRST_NAME LAST_NAME SALAIRE VILLE DÉPARTEMENT MANAGERID
1001 VAIBHAVI MISHRA 65000 PUNE ORACLE 1
1002 VAIBHAV SHARMA 60000 NOÏDA ORACLE 1
2001 PRACHI SHARMA 55500 CHANDIGAR ORACLE 1
2002 BHAVESH JAIN 65500 PUNE FMW 2
3001 PRANOTI SHENDE 55500 PUNE JAVA 3
3003 DEEPAM JAUHARI 58500 Bombay JAVA 3
4001 RAJESH GOUD 60500 Bombay TEST 4
4003 RUCHIKA AGARWAL 60000 DELHI ORACLE 1
5001 ARCHIT SHARMA 55500 DELHI TEST 4

Le résultat ci-dessus montre que nous avons récupéré les détails des employés, y compris les valeurs en double.

Exemple 2 : Écrivez une requête pour afficher le salaire des employés de la table des employés dont le salaire des employés est supérieur à 55 000 en utilisant le mot-clé DISTINCT.

SELECT DISTINCT (SALARY) FROM EMPLOYEES WHERE SALARY > 55000;

Dans l'instruction ci-dessus, nous récupérons le salaire de l'employé de la table de l'employé dont le salaire est supérieur à 55 000, où nous éliminons les valeurs en double. Le salaire distinct affichera le salaire unique de la table de l'employé.

Le résultat de l'instruction suivante :

SALAIRE
65 000
60 000
55 500
65 500
58 500
60500

Dans le premier exemple, nous avons récupéré les détails de l'employé dont le salaire est supérieur à 55 000. Le résultat de la requête inclut des valeurs en double. Mais dans le deuxième exemple, nous exécutons la même requête pour afficher le salaire d'un employé dont le salaire est supérieur à 55000. La requête affiche le résultat en éliminant les valeurs en double car nous avons utilisé le mot clé DISTINCT suivi de la colonne salaire.

Exemple 3 : Rédigez une requête pour afficher la ville et le salaire des employés à partir de la table des employés sans utiliser de mot-clé distinct.

SELECT SALARY, CITY FROM EMPLOYEES;

Nous avons affiché le salaire de l'employé et le nom de la ville du tableau de l'employé dans la déclaration ci-dessus, y compris les valeurs en double.

Le résultat de l'instruction suivante :

SALAIRE VILLE
65 500 PUNE
60 000 NOÏDA
50 500 JAIPUR
55 500 CHANDIGAR
65 500 PUNE
50 000 Bombay
55 500 PUNE
50 500 JAIPUR
58 500 Bombay
60500 Bombay
54 500 NOÏDA
60 000 DELHI
55 500 DELHI

Exemple 4 : Écrivez une requête pour afficher la ville et le salaire des employés à partir de la table des employés en utilisant des mots-clés distincts.

SÉLECTIONNER UN SALAIRE DISTINCT, VILLE DES EMPLOYÉS ;

Nous avons récupéré le salaire et la ville de l'employé à partir de la table des employés dans la déclaration ci-dessus. Mais nous avons récupéré une valeur unique qui n'est pas répétée dans toute la table à l'aide du mot-clé DISTINCT.

Le résultat de l'instruction suivante :

SALAIRE VILLE
65 500 PUNE
60 000 NOÏDA
50 500 JAIPUR
55 500 CHANDIGAR
50 000 Bombay
55 500 PUNE
58 500 Bombay
60500 Bombay
54 500 NOÏDA
60 000 DELHI
55 500 DELHI

Exemple 5 : Écrivez une requête pour afficher le nom et le service d'un employé à partir de la table des employés où le nom du service commence par 'O' sans utiliser le mot-clé DISTINCT ;

SELECT LAST_NAME, DEPARTMENT FROM EMPLOYEES WHERE DEPARTMENT LIKE 'O%';

Dans la déclaration ci-dessus, nous avons récupéré les noms de famille des employés, les départements de la table des employés des employés dont les noms de département commencent par 'O', y compris les valeurs en double.

Le résultat de l'instruction suivante :

LAST_NAME DÉPARTEMENT
MISHRA ORACLE
SHARMA ORACLE
SHARMA ORACLE
AGARWAL ORACLE

Seuls quatre enregistrements sont affichés pour les employés dont le service commence par 'O'.

Exemple 6 : Écrivez une requête pour afficher le nom et le service d'un employé à partir de la table des employés où le nom du service commence par 'O' en utilisant le mot-clé DISTINCT ;

SELECT DISTINCT LAST_NAME, DEPARTMENT FROM EMPLOYEES WHERE DEPARTMENT LIKE 'O%';

Nous avons utilisé la même requête dans l'exemple 5, juste ajouté le mot-clé DISTINCT juste avant le nom des colonnes qui affichera les valeurs uniques de la table des employés dont le nom du service commence par 'O'.

Le résultat de l'instruction suivante :

LAST_NAME DÉPARTEMENT
MISHRA ORACLE
SHARMA ORACLE
AGARWAL ORACLE

La même requête que nous avons exécutée dans la requête ci-dessus, nous avons ajouté le mot-clé DISTINCT juste avant les colonnes. La sortie que nous obtenons diffère de l'exemple ci-dessus car l'affichage du résultat a des valeurs uniques.

Exemple 7 : Écrivez une requête pour compter le salaire des employés à partir de la table des employés sans utiliser de mot-clé distinct.

SELECT COUNT (SALARY) AS TOTAL SALARY FROM EMPLOYEES;

Dans la déclaration ci-dessus, nous avons compté le nombre total de salaires de la table de l'employé, y compris les valeurs en double.

Le résultat de l'instruction suivante :

SALAIRE TOTAL
13

Exemple 8 : Écrivez une requête pour compter le salaire des employés à partir de la table des employés en utilisant un mot-clé distinct.

SELECT COUNT(DISTINCT SALARY) AS TOTAL SALARY FROM EMPLOYEES;

Dans la déclaration ci-dessus, nous avons compté le nombre total de salaires de la table de l'employé, à l'exclusion des valeurs en double.

Le résultat de l'instruction suivante :

SALAIRE TOTAL
8