5.1 SAHİP beyanı
SQL'de ile birlikte kullanılan başka bir yararlı operatör vardır GROUP BY
, buna denir HAVING
.
Anlam olarak operatöre tamamen benzemektedir WHERE
. Yalnızca WHERE
gruplandırmadan önce bir satır filtresi belirlemenize izin verir ve yardım ile HAVING
gruplamadan sonra kayıtlara uygulanan bir filtre ayarlayabilirsiniz.
Gruplandırma kullanılırken ve gruplama sonuçları filtrelenirken sorgunun genel görünümü aşağıdaki gibidir:
SELECT columns
FROM table
WHERE condition
GROUP BY columns
HAVING condition
HAVING
yalnızca istek içeriyorsa kullanılabilir GROUP BY
.
Yıllara göre işe alınan çalışan sayısını gösteren bir sorgu yazalım.
SELECT
YEAR(join_date) AS hire_year,
COUNT(*) AS total
FROM employee
GROUP BY hire_year
Ve bu sorgunun sonucu:
kiralama_yılı | Toplam |
---|---|
2012 | 1 |
2013 | 1 |
2014 | 1 |
2015 | 2 |
2018 | 1 |
Ve şimdi bir veya daha az çalışanın işe alındığı yılları hariç tutuyoruz. Örnek:
SELECT
YEAR(join_date) AS hire_year,
COUNT(*) AS total
FROM employee
GROUP BY hire_year
HAVING total > 1
Ve bu sorgunun sonucu:
kiralama_yılı | Toplam |
---|---|
2015 | 2 |
5.3 İfadelerin yürütme sırası
Doğru ve verimli SQL sorguları yazmak için bunların SQL sunucusu tarafından nasıl yürütüldüğünü anlamanız gerekir.
Eylemleri gerçekleştirme prosedürü kesinlikle düzenlenmiştir ve arzunuza bağlı değildir. Operatörleri yeniden düzenleyip farklı bir sıralama elde edemezsiniz.
SQL sorgusu bu sırayla birkaç aşamada yürütülür.
- 1. Aşama - satırları getirme
- İlk olarak, belirtilen tablodaki tüm satırlar seçilir.
- Daha sonra bunlara hesaplanan alanlar eklenir.
- Ve sonra tüm satırlardan yalnızca koşulu sağlayanlar kalır
WHERE
- Aşama 2 - gruplama
- Daha sonra sonuçlara gruplama uygulanır.
- Gruplandırma sırasında
COUNT(*)
. - Son olarak, gruplama sonucuna bir filtre uygulanır
HAVING
. - Aşama 3 - sıralama
- Önceki adımlarda elde edilen satırlar kullanılarak sıralanır
ORDER BY
.
LIMIT
Son olarak, sonuç ve ile kırpılabilir OFFSET
.
GO TO FULL VERSION