Dotaz SQL DISTINCT se používá k načtení jedinečných hodnot z tabulek pomocí příkazu SELECT v SQL.
Může nastat situace, která nastane, když chcete načíst jedinečné hodnoty z tabulek, ale v tabulce jsou také duplicitní hodnoty. V takovém případě byste měli použít dotaz SELECT DISTINCT k odstranění duplicitních hodnot a načtení jedinečných hodnot z tabulky.
Syntaxe příkazu SELECT DISTINCT:
SELECT DISTINCT columnname1, columnname2 FROM table_name;
Zvažte existující tabulky zaměstnanců, které mají následující záznamy:
ID ZAMĚSTNANCE | FIRST_NAME | LAST_NAME | PLAT | MĚSTO | ODDĚLENÍ | ID SPRÁVCE |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | ORACLE | 1 |
1002 | VAIBHAV | SHARMA | 60 000 | NOIDA | ORACLE | 1 |
1003 | NIKHIL | VANI | 50500 | JAIPUR | FMW | 2 |
2001 | PRACHI | SHARMA | 55500 | CHANDIgarH | ORACLE | 1 |
2002 | BHAVESH | JAIN | 65500 | PUNE | FMW | 2 |
2003 | RUCHIKA | JAIN | 50 000 | MUMBAI | TESTOVÁNÍ | 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 | TESTOVÁNÍ | 4 |
4002 | ASHWINI | BAGHAT | 54500 | NOIDA | JAVA | 3 |
4003 | RUCHIKA | AGARWAL | 60 000 | DELHI | ORACLE | 1 |
5001 | ARCHIT | SHARMA | 55500 | DELHI | TESTOVÁNÍ | 4 |
Pojďme pochopit SELECT DISTINCT pomocí příkladu.
Příklad 1: Napište dotaz pro získání podrobností o zaměstnanci, jehož plat zaměstnance je vyšší než 55 000, bez použití klíčového slova DISTINCT.
SELECT * FROM EMPLOYEES WHERE SALARY > 55000;
Ve výše uvedeném prohlášení jsme získali údaje o zaměstnanci z tabulky zaměstnance, jehož plat zaměstnance je vyšší než 55 000, včetně duplicitních hodnot.
Výstup pro následující příkaz:
ID ZAMĚSTNANCE | FIRST_NAME | LAST_NAME | PLAT | MĚSTO | ODDĚLENÍ | ID SPRÁVCE |
1001 | VAIBHAVI | MISHRA | 65 000 | PUNE | ORACLE | 1 |
1002 | VAIBHAV | SHARMA | 60 000 | NOIDA | ORACLE | 1 |
2001 | PRACHI | 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 | TESTOVÁNÍ | 4 |
4003 | RUCHIKA | AGARWAL | 60 000 | DELHI | ORACLE | 1 |
5001 | ARCHIT | SHARMA | 55500 | DELHI | TESTOVÁNÍ | 4 |
Výše uvedený výsledek ukazuje, že jsme získali podrobnosti o zaměstnancích, včetně duplicitních hodnot.
Příklad 2: Napište dotaz pro zobrazení platu zaměstnanců z tabulky zaměstnanců, jejichž plat zaměstnanců je větší než 55 000 pomocí klíčového slova DISTINCT.
SELECT DISTINCT (SALARY) FROM EMPLOYEES WHERE SALARY > 55000;
Ve výše uvedeném výpisu načítáme mzdu zaměstnance z tabulky zaměstnance, jehož mzda je vyšší než 55000, kde odstraňujeme duplicitní hodnoty. Odlišný plat zobrazí jedinečný plat z tabulky zaměstnance.
Výstup pro následující příkaz:
PLAT |
65 000 |
60 000 |
55500 |
65500 |
58500 |
60500 |
V prvním příkladu jsme získali podrobnosti o zaměstnanci, jehož plat je vyšší než 55 000. Výsledek dotazu obsahuje duplicitní hodnoty. Ale ve druhém příkladu provedeme stejný dotaz pro zobrazení platu zaměstnance, jehož plat je vyšší než 55 000. Dotaz zobrazí výsledek eliminující duplicitní hodnoty, protože jsme použili klíčové slovo DISTINCT následované sloupcem plat.
Příklad 3: Napište dotaz pro zobrazení města zaměstnance a platu z tabulky zaměstnanců bez použití odlišného klíčového slova.
SELECT SALARY, CITY FROM EMPLOYEES;
Ve výše uvedeném výpisu jsme zobrazili plat zaměstnance a název města z tabulky zaměstnance, včetně duplicitních hodnot.
Výstup pro následující příkaz:
PLAT | MĚSTO |
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 | DELHI |
55500 | DELHI |
Příklad 4: Napište dotaz pro zobrazení města a platu zaměstnance z tabulky zaměstnanců pomocí odlišných klíčových slov.
VYBERTE ODLIŠNÝ PLAT, MĚSTO OD ZAMĚSTNANCŮ;
Získali jsme plat zaměstnance a město z tabulky zaměstnanců ve výše uvedeném výpisu. Ale pomocí klíčového slova DISTINCT jsme získali jedinečnou hodnotu, která se neopakuje v celé tabulce.
Výstup pro následující příkaz:
PLAT | MĚSTO |
65500 | PUNE |
60 000 | NOIDA |
50500 | JAIPUR |
55500 | CHANDIgarH |
50 000 | MUMBAI |
55500 | PUNE |
58500 | MUMBAI |
60500 | MUMBAI |
54500 | NOIDA |
60 000 | DELHI |
55500 | DELHI |
Příklad 5: Napište dotaz pro zobrazení příjmení a oddělení zaměstnance z tabulky zaměstnanců, kde název oddělení začíná na 'O' bez použití klíčového slova DISTINCT;
SELECT LAST_NAME, DEPARTMENT FROM EMPLOYEES WHERE DEPARTMENT LIKE 'O%';
Ve výše uvedeném příkazu jsme získali příjmení zaměstnanců, oddělení z tabulky zaměstnanců těch zaměstnanců, jejichž jména oddělení začínají na „O“, včetně duplicitních hodnot.
Výstup pro následující příkaz:
LAST_NAME | ODDĚLENÍ |
MISHRA | ORACLE |
SHARMA | ORACLE |
SHARMA | ORACLE |
AGARWAL | ORACLE |
Jsou zobrazeny pouze čtyři záznamy o zaměstnancích, jejichž oddělení začíná na „O“.
Příklad 6: Napište dotaz pro zobrazení příjmení a oddělení zaměstnance z tabulky zaměstnanců, kde název oddělení začíná na „O“ pomocí klíčového slova DISTINCT;
SELECT DISTINCT LAST_NAME, DEPARTMENT FROM EMPLOYEES WHERE DEPARTMENT LIKE 'O%';
Použili jsme stejný dotaz v příkladu 5, jen jsme přidali klíčové slovo DISTINCT těsně před název sloupců, které zobrazí jedinečné hodnoty z tabulky zaměstnance, jehož název oddělení začíná „O“.
Výstup pro následující příkaz:
LAST_NAME | ODDĚLENÍ |
MISHRA | ORACLE |
SHARMA | ORACLE |
AGARWAL | ORACLE |
Stejný dotaz, který jsme provedli ve výše uvedeném dotazu, jsme přidali klíčové slovo DISTINCT těsně před sloupce. Výstup, který získáme, se liší od výše uvedeného příkladu, protože zobrazení výsledku má jedinečné hodnoty.
Příklad 7: Napište dotaz pro výpočet platů zaměstnanců z tabulky zaměstnanců bez použití odlišného klíčového slova.
SELECT COUNT (SALARY) AS TOTAL SALARY FROM EMPLOYEES;
Ve výše uvedeném výpisu jsme spočítali celkový počet platů z tabulky zaměstnance včetně duplicitních hodnot.
Výstup pro následující příkaz:
CELKOVÝ PLAT |
13 |
Příklad 8: Napište dotaz pro výpočet platů zaměstnanců z tabulky zaměstnanců pomocí odlišného klíčového slova.
SELECT COUNT(DISTINCT SALARY) AS TOTAL SALARY FROM EMPLOYEES;
Ve výše uvedeném prohlášení jsme spočítali celkový počet platů z tabulky zaměstnance, s vyloučením duplicitních hodnot.
Výstup pro následující příkaz:
CELKOVÝ PLAT |
8 |