Kurs SQL – polecenie DISTINCT

Zadanie

Wyświetl wszystkie numery ID pracowników którzy w okresie od 1 sierpnia 1996 do 15 sierpnia 1996 do których były przypisane jakiekolwiek zamówienia klientów.

Rozwiązanie

Warunki początkowe:

  • w tym zadaniu korzystamy z treningowej bazy „Northwind”,
  • wszystkie zrzuty ekranowej pochodzą z SQL Server 2008 R2,

Jak przy każdym zadaniu na początku należy określić kilka rzeczy:

  1. Jakie dane chcemy wyświetlić, gdzie znajdują się dane których potrzebujemy?

  2. oraz określić warunki brzegowe.

Ad.1. Jakie dane chcemy wyświetlić, gdzie znajdują się dane których potrzebujemy?

Dane których potrzebujemy do wyśtwielenia znajdują się w tabeli orders (patrz schemat bazy Nortwind tutaj). Do wyświetlenia potrzebujemy tylko numery ID pracowników, czyli potrzebujemy wyświetlić dane z kolumny EmployeeID.

nasza sekcja SELECT będzie wyglądała następująco:

SELECT EmployeeID

teraz określamy źródło danych, jak już powiedziałem źródłem danych jest tabela Orders, czyli sekcja FROM będzie wyglądała następująco:

FROM Orders

Ad.2. Określ warunki brzegowe.

Do wyświetlenia poprawnie danych potrzebujemy wyświetlić tylko zamówienia które zostały złożone między 1 sierpnia 1996 a 15 sierpnia 1996. W tym celu będziemy musieli analizować kolumnę OrderDate, gdzie przechowywana jest data zamówienia. Jeśli ta data, dla pojedynczego zamówienia, mieści się w zakresie dat 1-15 sierpnia 1996 rekord powinien być wyświetlony.

Nasze warunki brzegowe czyli sekcja WHERE będzie wyglądała tak:

WHERE OrderDate BETWEEN '1996-08-01' AND '1996-08-15'

po złożeniu wszystkiego w całość nasze zapytanie wygląda tak:

SELECT EmployeeID
FROM Orders
WHERE OrderDate BETWEEN '1996-08-01' AND '1996-08-15'

Kurs SQL - polecenie DISTINCT. Widok zapytania w SQL Server.
Kurs SQL – polecenie DISTINCT. Widok zapytania w SQL Server.

 

Uruchamiamy zapytanie i otrzymujemy wynik.

Kurs SQL - Polecenie DISTINCT. Rezultat uruchomienia zapytania.
Kurs SQL – Polecenie DISTINCT. Rezultat uruchomienia zapytania.

 

Otrzymaliśmy 13 rekordów. Zwróćmy jednak uwagę, że niektóre numery ID pracowników powtarzają się a my chcemy tylko listę z niepowtarzającymi się numerami.

Kurs SQL - Polecenie DISTINCT. Resultat zapytania.
Kurs SQL – Polecenie DISTINCT. Resultat zapytania.

W tym celu korzystamy z polecenia DISTINCT, które umieszczamy zaraz za słówkiem SELECT.

03. DISTINCT marked

uruchamiamy zapytanie jeszcze raz i otrzymujemy taki wynik jaki chcieliśmy. Unikalną listę numerów ID pracowników obsługujących zamówienia złożone między 1-15 sierpnia 1996.

Kurs SQL - polecenie DISTINCT. Wynik finalny zapytania.
Kurs SQL – polecenie DISTINCT. Wynik finalny zapytania.