Menu
Coddy logo textTech

Grupowanie — część 2

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

Słowo kluczowe WHERE sprawdza warunek osobno dla każdego rekordu. Na przykład:

SELECT * FROM table1
WHERE col1 > col2

Warunek col1 > col2 zostanie sprawdzony dla każdego rekordu.

Ale co, jeśli chcemy filtrować wyniki agregacji? Na przykład:

SELECT category, AVG(price) FROM table1
WHERE AVG(price) > 40
GROUP BY category

To nie zadziała, ponieważ WHERE nie może sprawdzać agregacji. Do tego służy słowo kluczowe HAVING. Filtruje ono dane według warunku agregującego.

SELECT category, AVG(price) FROM table1
GROUP BY category
HAVING AVG(price) > 40

To odfiltruje wszystkie kategorie, dla których średnia cena jest większa niż 40.

Jeśli chcemy połączyć klauzule HAVING i WHERE, napiszemy:

SELECT category, AVG(price) FROM table1
WHERE price > 25
GROUP BY category
HAVING AVG(price) > 40

Najpierw przejdzie rekord po rekordzie i odfiltruje wszystkie rekordy, w których cena jest większa niż 25, a dopiero potem wykona klauzulę GROUP BY i odfiltruje każdą kategorię, w której średnia cena jest większa niż 40.

challenge icon

Wyzwanie

Średni

Dostępne tabele i kolumny:

  • earthquakes: location, amplitude, period

Skala Richtera jest skalą logarytmiczną używaną do mierzenia magnitudy trzęsień ziemi.

Musimy zwrócić średnią magnitudę dla każdej lokalizacji, uwzględniając wszystkie duże trzęsienia ziemi.

Duże trzęsienie ziemi definiuje się jako takie, w którym:

  • Amplituda jest większa lub równa 1
  • Okres fal jest większy lub równy 1 minucie

W tym wyzwaniu użyjemy innego wzoru: M = (A/T)^2 / T, który jest równoważny M = ((A/T)*(A/T)) / T. Tutaj M to magnituda, A to kolumna amplitude, a T to kolumna period.

Zwróć lokalizację i średnią magnitudę dla każdej lokalizacji, uwzględniając tylko duże trzęsienia ziemi (nazwij kolumnę avg_magnitude). Uwzględnij w wyniku tylko lokalizacje, w których avg_magnitude jest większe niż 1.

Zaokrąglij wyniki do 2 miejsc po przecinku.

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