Menu
Coddy logo textTech

Podzapytania — część 2

Część sekcji Podstawy ścieżki SQL w Coddy. Lekcja 39 z 72.

Istnieją trzy główne typy podzapytań:

  1. Podzapytania skalarne — zwracają pojedynczą wartość (jeden wiersz, jedna kolumna)
  2. Podzapytania wierszowe — zwracają jeden wiersz z wieloma kolumnami
  3. Podzapytania tabelaryczne — zwracają wiele wierszy i kolumn

Na przykład, oto kilka zastosowań każdego typu podzapytania:

Podzapytanie skalarne — znajdź pracowników, którzy zarabiają więcej niż średnia pensja:

SELECT name, salary
FROM employees
WHERE salary > (
    SELECT AVG(salary)
    FROM employees
);

Podzapytanie wierszowe — znajdź pracownika (lub pracowników) z tego samego działu i z taką samą pensją jak Alice

SELECT name
FROM employees
WHERE (department, salary) = (
    SELECT department, salary
    FROM employees
    WHERE name = 'Alice'
);

Podzapytania tabelaryczne — wyświetlanie działów i liczby ich pracowników

SELECT department, count
FROM (
    SELECT department, COUNT(*) as count
    FROM employees
    GROUP BY department
) as dept_counts;

Zwróć uwagę na przypadki użycia:

  • Skalar — proste porównania (>, <, =)
  • Gdy trzeba dopasować wiele kolumn
  • Gdy musisz wykonać zapytanie na zbiorze wyników
challenge icon

Wyzwanie

Łatwy

Dostępne tabele i kolumny:

  • shop: price, quantity, category, list_date

Znajdź kategorie, których łączna ilość jest większa niż średnia wszystkich ilości w sklepie. Zwróć category oraz zsumowaną ilość o nazwie total_quantity.

Ważne: Musisz użyć podzapytania wewnątrz klauzuli HAVING, aby obliczyć średnią. Nie używaj wartości wpisanej na sztywno ani osobnego zapytania: podzapytanie powinno obliczać AVG(quantity) bezpośrednio z tabeli shop wewnątrz HAVING.

Etapy rozwiązania:

  1. Najpierw napisz podzapytanie, które oblicza średnią ze wszystkich ilości w sklepie: SELECT AVG(quantity) FROM shop
  2. Następnie dla każdej kategorii zsumuj jej ilości i porównaj je z wynikiem tego podzapytania, używając słowa kluczowego HAVING

Spróbuj swoich sił

quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Podstawy

Poćwicz samodzielnie: Edytor online SQL