sql >> Database >  >> RDS >> Database

SQL Select Distinct

De SQL DISTINCT-query wordt gebruikt om unieke waarden uit de tabellen op te halen met behulp van de SELECT-instructie in de SQL.

Er kan zich een situatie voordoen waarin u de unieke waarden uit de tabellen wilt ophalen, maar er zijn ook dubbele waarden in de tabel. In dat geval moet u de SELECT DISTINCT-query gebruiken om dubbele waarden te verwijderen en unieke waarden uit de tabel op te halen.

Syntaxis van SELECT DISTINCT-instructie:

SELECT DISTINCT columnname1, columnname2 FROM table_name;

Overweeg de bestaande werknemerstabellen die de volgende records hebben:

WERKNEMER-ID FIRST_NAME LAST_NAME SALARIS STAD AFDELING MANAGERID
1001 VAIBHAVI MISHRA 65500 PUNE ORAKLE 1
1002 VAIBHAV SHARMA 60000 NOIDA ORAKLE 1
1003 NIKHIL VANI 50500 JAIPUR FMW 2
2001 PRACHI SHARMA 55500 CHANDIGARH ORAKLE 1
2002 BHAVESH JAIN 65500 PUNE FMW 2
2003 RUCHIKA JAIN 50000 MUMBAI TESTEN 4
3001 PRANOTI SHENDE 55500 PUNE JAVA 3
3002 ANUJA WANRE 50500 JAIPUR FMW 2
3003 DEEPAM JAUHARI 58500 MUMBAI JAVA 3
4001 RAJESH GOUD 60500 MUMBAI TESTEN 4
4002 ASHWINI BAGHAT 54500 NOIDA JAVA 3
4003 RUCHIKA AGARWAL 60000 DELHI ORAKLE 1
5001 ARCHIT SHARMA 55500 DELHI TESTEN 4

Laten we de SELECT DISTINCT begrijpen aan de hand van een voorbeeld.

Voorbeeld 1: Schrijf een zoekopdracht om werknemersgegevens op te halen wiens werknemerssalaris hoger is dan 55000 zonder het DISTINCT-zoekwoord te gebruiken.

SELECT * FROM EMPLOYEES WHERE SALARY > 55000;

In de bovenstaande verklaring hebben we de werknemersgegevens opgehaald uit de werknemerstabel waarvan het werknemerssalaris hoger is dan 55000, inclusief de dubbele waarden.

De uitvoer voor de volgende verklaring:

WERKNEMER-ID FIRST_NAME LAST_NAME SALARIS STAD AFDELING MANAGERID
1001 VAIBHAVI MISHRA 65000 PUNE ORAKLE 1
1002 VAIBHAV SHARMA 60000 NOIDA ORAKLE 1
2001 PRACHI SHARMA 55500 CHANDIGARH ORAKLE 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 TESTEN 4
4003 RUCHIKA AGARWAL 60000 DELHI ORAKLE 1
5001 ARCHIT SHARMA 55500 DELHI TESTEN 4

Het bovenstaande resultaat laat zien dat we de werknemersgegevens hebben opgehaald, inclusief dubbele waarden.

Voorbeeld 2: Schrijf een zoekopdracht om het werknemerssalaris weer te geven van de werknemerstabel waarvan het werknemerssalaris hoger is dan 55000 met behulp van het DISTINCT-zoekwoord.

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

In de bovenstaande verklaring halen we het werknemerssalaris op uit de tabel van de werknemer wiens salaris hoger is dan 55000, waarbij we de dubbele waarden elimineren. Het onderscheidende salaris toont het unieke salaris uit de tabel van de werknemer.

De uitvoer voor de volgende verklaring:

SALARIS
65000
60000
55500
65500
58500
60500

In het eerste voorbeeld hebben we de werknemersgegevens opgehaald wiens salaris hoger is dan 55000. Het zoekresultaat bevat dubbele waarden. Maar in het tweede voorbeeld voeren we dezelfde zoekopdracht uit om het werknemerssalaris weer te geven wiens salaris hoger is dan 55000. De zoekopdracht geeft het resultaat weer en elimineert de dubbele waarden omdat we het DISTINCT-sleutelwoord hebben gebruikt gevolgd door de salariskolom.

Voorbeeld 3: Schrijf een zoekopdracht om de woonplaats en het salaris van de werknemer uit de tabel met werknemers weer te geven zonder een apart trefwoord te gebruiken.

SELECT SALARY, CITY FROM EMPLOYEES;

We hebben het salaris van de werknemer en de plaatsnaam uit de tabel van de werknemer weergegeven in de bovenstaande verklaring, inclusief dubbele waarden.

De uitvoer voor de volgende verklaring:

SALARIS STAD
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

Voorbeeld 4: Schrijf een zoekopdracht om de woonplaats en het salaris van de werknemer uit de werknemerstabel weer te geven met verschillende trefwoorden.

SELECTEER EEN ONDERSCHEIDEN SALARIJE, STAD VAN WERKNEMERS;

We hebben het werknemerssalaris en de woonplaats opgehaald uit de werknemerstabel in de bovenstaande verklaring. Maar we hebben een unieke waarde opgehaald die niet in de hele tabel wordt herhaald met het trefwoord DISTINCT.

De uitvoer voor de volgende verklaring:

SALARIS STAD
65500 PUNE
60000 NOIDA
50500 JAIPUR
55500 CHANDIGARH
50000 MUMBAI
55500 PUNE
58500 MUMBAI
60500 MUMBAI
54500 NOIDA
60000 DELHI
55500 DELHI

Voorbeeld 5: Schrijf een zoekopdracht om de achternaam en afdeling van een medewerker weer te geven uit de tabel van de medewerker waarbij de afdelingsnaam begint met 'O' zonder het trefwoord DISTINCT te gebruiken;

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

In de bovenstaande verklaring hebben we de achternaam van de werknemers, afdelingen opgehaald uit de werknemerstabel van die werknemers wiens afdelingsnamen beginnen met 'O', inclusief dubbele waarden.

De uitvoer voor de volgende verklaring:

LAST_NAME AFDELING
MISHRA ORAKLE
SHARMA ORAKLE
SHARMA ORAKLE
AGARWAL ORAKLE

Er worden slechts vier records weergegeven van de medewerkers van wie de afdeling met 'O' begint.

Voorbeeld 6: Schrijf een zoekopdracht om de achternaam en afdeling van een medewerker weer te geven uit de tabel van de medewerker waarbij de afdelingsnaam begint met 'O' met behulp van het DISTINCT-sleutelwoord;

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

We hebben dezelfde zoekopdracht gebruikt in voorbeeld 5, alleen het DISTINCT-sleutelwoord toegevoegd net voor de kolomnaam die unieke waarden zal weergeven uit de tabel van de werknemer waarvan de afdelingsnaam begint met 'O'.

De uitvoer voor de volgende verklaring:

LAST_NAME AFDELING
MISHRA ORAKLE
SHARMA ORAKLE
AGARWAL ORAKLE

Dezelfde zoekopdracht die we hebben uitgevoerd in de bovenstaande zoekopdracht, we hebben het DISTINCT-sleutelwoord net voor kolommen toegevoegd. De uitvoer die we krijgen verschilt van het bovenstaande voorbeeld omdat de resultaatweergave unieke waarden heeft.

Voorbeeld 7: Schrijf een zoekopdracht om het werknemerssalaris uit de werknemerstabel te tellen zonder een apart trefwoord te gebruiken.

SELECT COUNT (SALARY) AS TOTAL SALARY FROM EMPLOYEES;

In de bovenstaande verklaring hebben we het totale aantal salarissen uit de tabel van de werknemer geteld, inclusief dubbele waarden.

De uitvoer voor de volgende verklaring:

TOTAAL SALARIS
13

Voorbeeld 8: Schrijf een zoekopdracht om het werknemerssalaris uit de werknemerstabel te tellen met behulp van een onderscheidend trefwoord.

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

In de bovenstaande verklaring hebben we het totale aantal salarissen geteld uit de tabel van de werknemer, exclusief dubbele waarden.

De uitvoer voor de volgende verklaring:

TOTAAL SALARIS
8


  1. Fatale fout:[] operator niet ondersteund voor strings

  2. sqldeveloper-foutbericht:netwerkadapter kan de verbindingsfout niet tot stand brengen

  3. Hoe wijzig ik de standaardwaarde van de kolom in PostgreSQL?

  4. Oracle Sloten &tafelsloten:hoe het werkt