La query SQL DISTINCT viene utilizzata per recuperare valori univoci dalle tabelle utilizzando l'istruzione SELECT nell'SQL.
Potrebbe verificarsi una situazione quando si desidera recuperare i valori univoci dalle tabelle, ma all'interno della tabella sono presenti anche valori duplicati. In tal caso, dovresti utilizzare la query SELECT DISTINCT per eliminare i valori duplicati e recuperare i valori univoci dalla tabella.
Sintassi dell'istruzione SELECT DISTINCT:
SELECT DISTINCT columnname1, columnname2 FROM table_name;
Considera le tabelle dei dipendenti esistenti che hanno i seguenti record:
ID DIPENDENTE | FIRST_NAME | COGNOME | STIPENDIO | CITTÀ | REPARTO | RIDESTORE |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | ORACLE | 1 |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | ORACLE | 1 |
1003 | NICHIL | VANI | 50500 | JAIPUR | FM | 2 |
2001 | PRACHI | SHARMA | 55500 | CHANDIGARH | ORACLE | 1 |
2002 | BHAVESH | JAIN | 65500 | PUNE | FM | 2 |
2003 | RUCHIKA | JAIN | 50000 | MUMBAI | PROVA | 4 |
3001 | PRANOTI | SHENDE | 55500 | PUNE | JAVA | 3 |
3002 | ANUJA | WANRE | 50500 | JAIPUR | FM | 2 |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAI | JAVA | 3 |
4001 | RAJESH | GOUD | 60500 | MUMBAI | PROVA | 4 |
4002 | ASHWINI | BAGAGLIO | 54500 | NOIDA | JAVA | 3 |
4003 | RUCHIKA | AGARWAL | 60000 | DELHI | ORACLE | 1 |
5001 | ARCHIT | SHARMA | 55500 | DELHI | PROVA | 4 |
Comprendiamo il SELECT DISTINCT con l'aiuto di un esempio.
Esempio 1: Scrivi una query per recuperare i dettagli del dipendente il cui stipendio del dipendente è superiore a 55000 senza utilizzare la parola chiave DISTINCT.
SELECT * FROM EMPLOYEES WHERE SALARY > 55000;
Nella dichiarazione precedente, abbiamo recuperato i dettagli del dipendente dalla tabella del dipendente il cui stipendio del dipendente è maggiore di 55000, inclusi i valori duplicati.
L'output per la seguente istruzione:
ID DIPENDENTE | FIRST_NAME | COGNOME | STIPENDIO | CITTÀ | REPARTO | RIDESTORE |
1001 | VAIBHAVI | MISHRA | 65000 | PUNE | ORACLE | 1 |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | ORACLE | 1 |
2001 | PRACHI | SHARMA | 55500 | CHANDIGARH | ORACLE | 1 |
2002 | BHAVESH | JAIN | 65500 | PUNE | FM | 2 |
3001 | PRANOTI | SHENDE | 55500 | PUNE | JAVA | 3 |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAI | JAVA | 3 |
4001 | RAJESH | GOUD | 60500 | MUMBAI | PROVA | 4 |
4003 | RUCHIKA | AGARWAL | 60000 | DELHI | ORACLE | 1 |
5001 | ARCHIT | SHARMA | 55500 | DELHI | PROVA | 4 |
Il risultato precedente mostra che abbiamo recuperato i dettagli dei dipendenti, inclusi i valori duplicati.
Esempio 2: Scrivi una query per visualizzare lo stipendio dei dipendenti dalla tabella dei dipendenti il cui stipendio dei dipendenti è maggiore di 55000 utilizzando la parola chiave DISTINCT.
SELECT DISTINCT (SALARY) FROM EMPLOYEES WHERE SALARY > 55000;
Nella dichiarazione di cui sopra, stiamo recuperando lo stipendio del dipendente dalla tabella del dipendente il cui stipendio è maggiore di 55000, dove stiamo eliminando i valori duplicati. Lo stipendio distinto mostrerà lo stipendio unico dal tavolo del dipendente.
L'output per la seguente istruzione:
STIPENDIO |
65000 |
60000 |
55500 |
65500 |
58500 |
60500 |
Nel primo esempio, abbiamo recuperato i dettagli del dipendente il cui stipendio è maggiore di 55000. Il risultato della query include valori duplicati. Ma nel secondo esempio, eseguiamo la stessa query per visualizzare lo stipendio dei dipendenti il cui stipendio è maggiore di 55000. La query mostra il risultato eliminando i valori duplicati perché abbiamo utilizzato la parola chiave DISTINCT seguita dalla colonna dello stipendio.
Esempio 3: Scrivi una query per visualizzare la città dei dipendenti e lo stipendio dalla tabella dei dipendenti senza utilizzare una parola chiave distinta.
SELECT SALARY, CITY FROM EMPLOYEES;
Abbiamo mostrato lo stipendio del dipendente e il nome della città dalla tabella del dipendente nella dichiarazione sopra, inclusi i valori duplicati.
L'output per la seguente istruzione:
STIPENDIO | CITTÀ |
65500 | PUNE |
60000 | NOIDA |
50500 | JAIPUR |
55500 | CHANDIGARH |
65500 | PUNE |
50000 | MUMBAI |
55500 | PUNE |
50500 | JAIPUR |
58500 | MUMBAI |
60500 | MUMBAI |
54500 | NOIDA |
60000 | DELHI |
55500 | DELHI |
Esempio 4: Scrivi una query per visualizzare la città dei dipendenti e lo stipendio dalla tabella dei dipendenti utilizzando parole chiave distinte.
SELEZIONARE STIPENDIO DISTINTO, CITTÀ DAI DIPENDENTI;
Abbiamo recuperato lo stipendio e la città del dipendente dalla tabella dei dipendenti nella dichiarazione sopra. Ma abbiamo recuperato un valore univoco che non viene ripetuto nell'intera tabella utilizzando la parola chiave DISTINCT.
L'output per la seguente istruzione:
STIPENDIO | CITTÀ |
65500 | PUNE |
60000 | NOIDA |
50500 | JAIPUR |
55500 | CHANDIGARH |
50000 | MUMBAI |
55500 | PUNE |
58500 | MUMBAI |
60500 | MUMBAI |
54500 | NOIDA |
60000 | DELHI |
55500 | DELHI |
Esempio 5: Scrivi una query per visualizzare il cognome e il reparto di un dipendente dalla tabella del dipendente in cui il nome del reparto inizia con "O" senza utilizzare la parola chiave DISTINCT;
SELECT LAST_NAME, DEPARTMENT FROM EMPLOYEES WHERE DEPARTMENT LIKE 'O%';
Nella dichiarazione precedente, abbiamo recuperato i cognomi dei dipendenti, i reparti dalla tabella dei dipendenti di quei dipendenti i cui nomi dei reparti iniziano con "O", inclusi i valori duplicati.
L'output per la seguente istruzione:
COGNOME | REPARTO |
MISHRA | ORACLE |
SHARMA | ORACLE |
SHARMA | ORACLE |
AGARWAL | ORACLE |
Vengono visualizzati solo quattro record di quei dipendenti il cui reparto inizia con 'O'.
Esempio 6: Scrivi una query per visualizzare il cognome e il reparto di un dipendente dalla tabella del dipendente in cui il nome del reparto inizia con "O" utilizzando la parola chiave DISTINCT;
SELECT DISTINCT LAST_NAME, DEPARTMENT FROM EMPLOYEES WHERE DEPARTMENT LIKE 'O%';
Abbiamo utilizzato la stessa query nell'esempio 5, appena aggiunta la parola chiave DISTINCT appena prima del nome delle colonne che visualizzeranno valori univoci dalla tabella del dipendente il cui nome del reparto inizia con 'O'.
L'output per la seguente istruzione:
COGNOME | REPARTO |
MISHRA | ORACLE |
SHARMA | ORACLE |
AGARWAL | ORACLE |
La stessa query che abbiamo eseguito nella query precedente, abbiamo aggiunto la parola chiave DISTINCT appena prima delle colonne. L'output che otteniamo differisce dall'esempio precedente perché la visualizzazione dei risultati ha valori univoci.
Esempio 7: Scrivi una query per contare lo stipendio dei dipendenti dalla tabella dei dipendenti senza utilizzare una parola chiave distinta.
SELECT COUNT (SALARY) AS TOTAL SALARY FROM EMPLOYEES;
Nella dichiarazione sopra, abbiamo contato il numero totale di stipendi dalla tabella del dipendente, inclusi i valori duplicati.
L'output per la seguente istruzione:
STIPENDIO TOTALE |
13 |
Esempio 8: Scrivi una query per contare lo stipendio dei dipendenti dalla tabella dei dipendenti utilizzando una parola chiave distinta.
SELECT COUNT(DISTINCT SALARY) AS TOTAL SALARY FROM EMPLOYEES;
Nella dichiarazione sopra, abbiamo contato il numero totale di stipendi dalla tabella del dipendente, esclusi i valori duplicati.
L'output per la seguente istruzione:
STIPENDIO TOTALE |
8 |