Temat: Użycie podzapytań do zaawansowanych analiz danych
Podzapytania w SQL to bardzo przydatne narzędzie, które pozwala przeprowadzać bardziej zaawansowane analizy danych. Dzięki nim możemy łączyć, filtrować i obliczać wyniki w dynamiczny sposób. W tej sekcji omówimy, jak używać podzapytań do rozwiązywania bardziej złożonych problemów związanych z analizą danych.
Znajdowanie wartości ekstremalnych za pomocą podzapytań
Jednym z typowych sposobów użycia podzapytań jest znajdowanie wartości ekstremalnych, takich jak maksymalna lub minimalna wartość w zbiorze danych, a następnie używanie tych wartości w głównym zapytaniu.
Przykład: Znajdź produkty o cenie równej najwyższej cenie w tabeli produktów.
SELECT nazwa, cena
FROM Produkty
WHERE cena = (SELECT MAX(cena) FROM Produkty);
W tym przykładzie podzapytanie (SELECT MAX(cena) FROM Produkty)
zwraca maksymalną cenę ze wszystkich produktów, a główne zapytanie zwraca nazwy i ceny produktów, które mają tę najwyższą wartość.
Analiza porównawcza za pomocą podzapytań
Podzapytania mogą być także używane do porównywania wyników między różnymi grupami danych. Na przykład możemy obliczać średnią wartość i porównywać inne rekordy do tej wartości.
Przykład: Znajdź pracowników, którzy zarabiają więcej niż średnie wynagrodzenie w dziale IT.
SELECT imie, nazwisko, wynagrodzenie
FROM Pracownicy
WHERE wynagrodzenie > (SELECT AVG(wynagrodzenie)
FROM Pracownicy
WHERE dzial = 'IT');
Podzapytanie oblicza średnie wynagrodzenie pracowników w dziale IT, a główne zapytanie zwraca tych pracowników, którzy zarabiają więcej niż wynosi ta średnia.
Filtrowanie danych na podstawie wyników z innych tabel
Podzapytania mogą być używane do filtrowania danych na podstawie wyników z innych tabel. Jest to przydatne, gdy chcemy znaleźć informacje spełniające kryteria zależne od danych w wielu tabelach.
Przykład: Wyświetl zamówienia klientów o statusie VIP.
SELECT numer_zamowienia, data_zamowienia
FROM Zamowienia
WHERE id_klienta IN (SELECT id_klienta
FROM Klienci
WHERE status = 'VIP');
Podzapytanie (SELECT id_klienta FROM Klienci WHERE status = 'VIP')
zwraca identyfikatory klientów VIP, a główne zapytanie wyświetla numery zamówień i daty tych zamówień.
Agregacja danych z podzapytań
Podzapytania mogą być również używane do przeprowadzania złożonych operacji agregacyjnych, które następnie są wykorzystywane w głównym zapytaniu. Pozwala to na uzyskanie bardziej szczegółowych informacji o danych.
Przykład: Znajdź klasy, w których liczba uczniów jest większa niż średnia liczba uczniów we wszystkich klasach.
SELECT klasa_id, COUNT(*) AS liczba_uczniow
FROM Uczniowie
GROUP BY klasa_id
HAVING COUNT(*) > (SELECT AVG(liczba_uczniow)
FROM (SELECT COUNT(*) AS liczba_uczniow
FROM Uczniowie
GROUP BY klasa_id) AS Temp);
W tym przykładzie wewnętrzne podzapytanie tworzy tabelę tymczasową z liczbą uczniów w każdej klasie, a następnie średnia liczba uczniów jest obliczana. Główne zapytanie zwraca te klasy, w których liczba uczniów jest większa niż średnia.
Podzapytania skorelowane
Podzapytania skorelowane są bardziej złożone, ponieważ są wykonywane dla każdego wiersza osobno. Są przydatne, gdy chcemy przeprowadzić szczegółową analizę każdego rekordu.
Przykład: Znajdź pracowników, którzy zarabiają więcej niż średnia w ich dziale.
SELECT imie, nazwisko, wynagrodzenie
FROM Pracownicy p1
WHERE wynagrodzenie > (SELECT AVG(wynagrodzenie)
FROM Pracownicy p2
WHERE p1.dzial = p2.dzial);
Podzapytanie jest skorelowane, ponieważ odnosi się do wartości z głównego zapytania (p1.dzial = p2.dzial)
. Dzięki temu dla każdego pracownika jest obliczana średnia płaca w jego dziale, a następnie porównywana z jego wynagrodzeniem.
Testy przypięte do lekcji | |
---|---|
Aby uzyskać dostęp do testów i ćwiczeń interaktywnych - Zaloguj się |