Grouping Part 2
Coddy'nin SQL Journey'sinin Temeller bölümünün bir parçası — ders 37 / 72.
WHERE anahtar kelimesi her kayıtta ayrı ayrı bir koşul çalıştırır. Örneğin:
SELECT * FROM table1
WHERE col1 > col2col1 > col2 her kayıtta çalıştırılır ve koşulun karşılanıp karşılanmadığı kontrol edilir.
Ama ya toplu sonuçları filtrelemek istersek? Örneğin:
SELECT category, AVG(price) FROM table1
WHERE AVG(price) > 40
GROUP BY categoryBu çalışmayacaktır çünkü WHERE herhangi bir toplama işlemini kontrol edemez. Bunun için HAVING anahtar kelimesi vardır. Veriyi toplama koşuluna göre filtreler.
SELECT category, AVG(price) FROM table1
GROUP BY category
HAVING AVG(price) > 40Bu, ortalama fiyatı 40'dan büyük olan tüm kategorileri filtreleyecektir.
Eğer HAVING ve WHERE koşullarını birleştirmek istiyorsak şöyle yazacağız:
SELECT category, AVG(price) FROM table1
WHERE price > 25
GROUP BY category
HAVING AVG(price) > 40Bu önce kayıt kayıt giderek fiyatı 25'ten büyük olan tüm kayıtları filtreleyecek ve ancak ondan sonra GROUP BY yan tümcesini çalıştıracak ve ortalama fiyatı 40'tan büyük olan her kategoriyi filtreleyecek.
Görev
OrtaMevcut tablolar ve sütunlar:
<strong>earthquakes</strong>:<strong>location</strong>,<strong>amplitude</strong>,<strong>period</strong>
Richter ölçeği, depremlerin büyüklüğünü ölçmek için kullanılan logaritmik bir ölçektedir.
Tüm büyük depremlerin her konum için ortalama büyüklüğünü döndürmemiz gerekiyor
Büyük bir deprem şu şekilde tanımlanır:
- Genlik 1'e eşit veya büyüktür
- Dalgaların periyodu 1 dakikaya eşit veya büyüktür
Bu meydan okumada farklı bir formül kullanacağız: M = (A/T)<sup>2</sup> / T, bu da M = ((A/T)*(A/T)) / T ile eşdeğerdir.
Yalnızca büyük depremleri dahil ederek her konumun konumunu ve ortalama büyüklüğünü döndürün (sütunu avg_magnitude olarak adlandırın). Sonucunuza yalnızca avg_magnitude'u 1'den büyük olan konumları dahil edin
Sonuçları 2 ondalık basamağa yuvarlayın
Kopya kağıdı
WHERE anahtar kelimesi bireysel kayıtları filtreler, HAVING ise gruplama sonrasında toplu sonuçları filtreler:
SELECT category, AVG(price) FROM table1
GROUP BY category
HAVING AVG(price) > 40Her iki koşulu birleştirmek için:
SELECT category, AVG(price) FROM table1
WHERE price > 25
GROUP BY category
HAVING AVG(price) > 40WHERE önce kayıtları filtreler, ardından GROUP BY kalan veriyi gruplar ve son olarak HAVING gruplandırılmış sonuçları filtreler.
Kendin dene
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Temeller bölümündeki tüm dersler
4More Keywords
The IN keywordThe BETWEEN keywordThe LIKE keywordThe AS keywordRecap - Cellphone Models2Conditions
Conditions BasicsThe AND keywordThe OR keywordThe NOT keywordMultiple Conditions CombinedParenthesisBooleans5Arithmetic Operations
Mathematical OperatorsMathematical ColumnsThe Modulo OperationThe ROUND() Function3Specific Return Format
Null valuesSort Results Part 1Sort Results Part 2Recap - Cyber Security FirmLimit number of recordsRecap - Vehicle Factory6Intro Challenges
Recap - Parliamentary ElectionRecap - Police Criminal ArrestRecap - Bar Beverage ContainerRecap - Engineer new columns