Zapytanie SQL DISTINCT służy do pobierania unikalnych wartości z tabel przy użyciu instrukcji SELECT w SQL.
Może wystąpić sytuacja, gdy chcesz pobrać unikatowe wartości z tabel, ale zduplikowane wartości są również obecne w tabeli. W takim przypadku należy użyć zapytania SELECT DISTINCT, aby wyeliminować zduplikowane wartości i pobrać unikalne wartości z tabeli.
Składnia instrukcji SELECT DISTINCT:
SELECT DISTINCT columnname1, columnname2 FROM table_name;
Rozważ istniejące tabele pracowników, które zawierają następujące zapisy:
ID PRACOWNIKA | FIRST_NAME | LAST_NAME | WYNAGRODZENIE | MIASTO | DZIAŁ | IDENTYFIKATOR KIEROWCY |
1001 | VAIBHAVI | MISHRA | 65500 | PUNE | WYROCZNIA | 1 |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | WYROCZNIA | 1 |
1003 | NIKHIL | VANI | 50500 | JAIPUR | FMW | 2 |
2001 | PRACI | SHARMA | 55500 | CZANDIGAR | WYROCZNIA | 1 |
2002 | PRZYJMUJ SIĘ | JAIN | 65500 | PUNE | FMW | 2 |
2003 | RUCHIKA | JAIN | 50000 | MUMBAJ | TESTOWANIE | 4 |
3001 | PRANOTI | SHENDE | 55500 | PUNE | JAVA | 3 |
3002 | ANUJA | WANRE | 50500 | JAIPUR | FMW | 2 |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAJ | JAVA | 3 |
4001 | RAJESH | GOUD | 60500 | MUMBAJ | TESTOWANIE | 4 |
4002 | ASHWINI | TORBA | 54500 | NOIDA | JAVA | 3 |
4003 | RUCHIKA | AGARWAL | 60000 | DELHI | WYROCZNIA | 1 |
5001 | ARCHIT | SHARMA | 55500 | DELHI | TESTOWANIE | 4 |
Zrozummy SELECT DISTINCT za pomocą przykładu.
Przykład 1: Napisz zapytanie, aby pobrać dane pracownika, którego wynagrodzenie przekracza 55000 bez użycia słowa kluczowego DISTINCT.
SELECT * FROM EMPLOYEES WHERE SALARY > 55000;
W powyższym oświadczeniu pobraliśmy dane pracownika z tabeli pracownika, którego wynagrodzenie przekracza 55000, w tym zduplikowane wartości.
Dane wyjściowe następującej instrukcji:
ID PRACOWNIKA | FIRST_NAME | LAST_NAME | WYNAGRODZENIE | MIASTO | DZIAŁ | IDENTYFIKATOR KIEROWCY |
1001 | VAIBHAVI | MISHRA | 65000 | PUNE | WYROCZNIA | 1 |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | WYROCZNIA | 1 |
2001 | PRACI | SHARMA | 55500 | CZANDIGAR | WYROCZNIA | 1 |
2002 | PRZYJMUJ SIĘ | JAIN | 65500 | PUNE | FMW | 2 |
3001 | PRANOTI | SHENDE | 55500 | PUNE | JAVA | 3 |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAJ | JAVA | 3 |
4001 | RAJESH | GOUD | 60500 | MUMBAJ | TESTOWANIE | 4 |
4003 | RUCHIKA | AGARWAL | 60000 | DELHI | WYROCZNIA | 1 |
5001 | ARCHIT | SHARMA | 55500 | DELHI | TESTOWANIE | 4 |
Powyższy wynik pokazuje, że pobraliśmy dane pracowników, w tym zduplikowane wartości.
Przykład 2: Napisz zapytanie, aby wyświetlić wynagrodzenie pracownika z tabeli pracowników, których wynagrodzenie pracownika jest większe niż 55000, używając słowa kluczowego DISTINCT.
SELECT DISTINCT (SALARY) FROM EMPLOYEES WHERE SALARY > 55000;
W powyższym zestawieniu pobieramy wynagrodzenie pracownika z tabeli pracownika, którego wynagrodzenie jest większe niż 55000, gdzie eliminujemy zduplikowane wartości. Wyróżnione wynagrodzenie będzie wyświetlać unikalne wynagrodzenie z tabeli pracownika.
Dane wyjściowe następującej instrukcji:
WYNAGRODZENIE |
65000 |
60000 |
55500 |
65500 |
58500 |
60500 |
W pierwszym przykładzie pobraliśmy dane pracownika, którego wynagrodzenie jest większe niż 55000. Wynik zapytania zawiera zduplikowane wartości. Ale w drugim przykładzie wykonujemy to samo zapytanie, aby wyświetlić wynagrodzenie pracownika, którego wynagrodzenie jest większe niż 55000. Zapytanie wyświetla wynik eliminując zduplikowane wartości, ponieważ użyliśmy słowa kluczowego DISTINCT, po którym następuje kolumna wynagrodzenia.
Przykład 3: Napisz zapytanie, aby wyświetlić miasto pracownika i wynagrodzenie z tabeli pracowników bez użycia odrębnego słowa kluczowego.
SELECT SALARY, CITY FROM EMPLOYEES;
Wyświetliliśmy wynagrodzenie pracownika i nazwę miasta z tabeli pracownika w powyższym zestawieniu, w tym zduplikowane wartości.
Dane wyjściowe następującej instrukcji:
WYNAGRODZENIE | MIASTO |
65500 | PUNE |
60000 | NOIDA |
50500 | JAIPUR |
55500 | CZANDIGAR |
65500 | PUNE |
50000 | MUMBAJ |
55500 | PUNE |
50500 | JAIPUR |
58500 | MUMBAJ |
60500 | MUMBAJ |
54500 | NOIDA |
60000 | DELHI |
55500 | DELHI |
Przykład 4: Napisz zapytanie, aby wyświetlić miasto pracownika i wynagrodzenie z tabeli pracowników, używając odrębnych słów kluczowych.
WYBIERZ RÓŻNE WYNAGRODZENIE, MIASTO OD PRACOWNIKÓW;
Pobraliśmy wynagrodzenie pracownika i miasto z tabeli pracowników w powyższym zestawieniu. Ale pobraliśmy unikalną wartość, która nie powtarza się w całej tabeli za pomocą słowa kluczowego DISTINCT.
Dane wyjściowe następującej instrukcji:
WYNAGRODZENIE | MIASTO |
65500 | PUNE |
60000 | NOIDA |
50500 | JAIPUR |
55500 | CZANDIGAR |
50000 | MUMBAJ |
55500 | PUNE |
58500 | MUMBAJ |
60500 | MUMBAJ |
54500 | NOIDA |
60000 | DELHI |
55500 | DELHI |
Przykład 5: Napisz zapytanie, aby wyświetlić nazwisko i dział pracownika z tabeli pracownika, gdzie nazwa działu zaczyna się od „O” bez użycia słowa kluczowego DISTINCT;
SELECT LAST_NAME, DEPARTMENT FROM EMPLOYEES WHERE DEPARTMENT LIKE 'O%';
W powyższym oświadczeniu pobraliśmy nazwiska pracowników, działy z tabeli pracowników tych pracowników, których nazwy działów zaczynają się od „O”, w tym zduplikowane wartości.
Dane wyjściowe następującej instrukcji:
NAZWISKO | DZIAŁ |
MISHRA | WYROCZNIA |
SHARMA | WYROCZNIA |
SHARMA | WYROCZNIA |
AGARWAL | WYROCZNIA |
Wyświetlane są tylko cztery rekordy pracowników, których dział zaczyna się od „O”.
Przykład 6: Napisz zapytanie, aby wyświetlić nazwisko i dział pracownika z tabeli pracownika, gdzie nazwa działu zaczyna się od „O”, używając słowa kluczowego DISTINCT;
SELECT DISTINCT LAST_NAME, DEPARTMENT FROM EMPLOYEES WHERE DEPARTMENT LIKE 'O%';
Użyliśmy tego samego zapytania w przykładzie 5, po prostu dodaliśmy słowo kluczowe DISTINCT tuż przed nazwą kolumny, która będzie wyświetlać unikalne wartości z tabeli pracownika, którego nazwa działu zaczyna się od 'O'.
Dane wyjściowe następującej instrukcji:
NAZWISKO | DZIAŁ |
MISHRA | WYROCZNIA |
SHARMA | WYROCZNIA |
AGARWAL | WYROCZNIA |
To samo zapytanie, które wykonaliśmy w powyższym zapytaniu, dodaliśmy słowo kluczowe DISTINCT tuż przed kolumnami. Wynik, który otrzymujemy różni się od powyższego przykładu, ponieważ wyświetlany wynik ma unikalne wartości.
Przykład 7: Napisz zapytanie, aby policzyć wynagrodzenie pracowników z tabeli pracowników bez użycia odrębnego słowa kluczowego.
SELECT COUNT (SALARY) AS TOTAL SALARY FROM EMPLOYEES;
W powyższym zestawieniu policzyliśmy całkowitą liczbę wynagrodzeń z tabeli pracownika, w tym zduplikowane wartości.
Dane wyjściowe następującej instrukcji:
WYNAGRODZENIE ŁĄCZNE |
13 |
Przykład 8: Napisz zapytanie, aby policzyć wynagrodzenie pracownika z tabeli pracowników, używając odrębnego słowa kluczowego.
SELECT COUNT(DISTINCT SALARY) AS TOTAL SALARY FROM EMPLOYEES;
W powyższym zestawieniu policzyliśmy całkowitą liczbę wynagrodzeń z tabeli pracownika, z wyłączeniem zduplikowanych wartości.
Dane wyjściowe następującej instrukcji:
WYNAGRODZENIE ŁĄCZNE |
8 |