Ana içeriğe geç
Modül 13 · Ders 1 ders 4Kurstaki 49/57~15 min
Modül dersleri (1/4)

Giriş ve OVER cümleciği

Giriş ve OVER Cümlesi

Önceki derslerde verileri toplamak için GROUP BY öğesinin nasıl kullanılacağını gördük. Ancak GROUP BY çok büyük bir sınırlamaya sahiptir: satırları daraltır. Şehre göre gruplandırırsanız şehir başına tek bir satır alırsınız ve bireysel müşterilerin ayrıntılarını kaybedersiniz.

Pencere İşlevleri burada devreye giriyor. Orijinal satırları korurken toplu hesaplamalar (toplamlar veya ortalamalar gibi) çalıştırmanıza olanak tanırlar.

OVER() cümlesi

Sihirli anahtar kelime OVER()'dir. Veritabanına, toplama fonksiyonunun (örn. SUM, AVG, COUNT) bir pencere fonksiyonu olarak ele alınması, sonuç kümesinin tamamı (genel "pencere") üzerinden hesaplanması, ancak her satıra uygulanıp döndürülmesi gerektiğini söyler.

SQL
SELECT
  order_id,
  total_amount,
  AVG(total_amount) OVER() AS global_average
FROM orders;

Bu örnekte, her bir siparişi tutuyoruz, ancak her satırda ayrıca tüm siparişlerin ortalamasını içeren bir global_average sütunu var. Örneğin bir siparişin ortalamadan ne kadar saptığını ölçmek için çok kullanışlıdır!

Egzersiz#sql.m13.l1.e1
Denemeler: 0Yükleniyor…

'Ürünler' tablosundan 'fiyat' sütununu seçin. Tablonun tamamına bir pencere işleviyle hesaplanan maksimum fiyatı içeren 'global_max_price' adlı bir sütun ekleyin.

Düzenleyici yükleniyor…
İpucu göster

MAX(fiyat) işlevini OVER() ile birlikte kullanın.

3 denemeden sonra çözüm mevcut

Egzersiz#sql.m13.l1.e2
Denemeler: 0Yükleniyor…

'Kimlik', 'fiyat'ı çıkarın ve 'ürünler' tablosundan genel ortalama fiyatı ('global_avg') ekleyin.

Düzenleyici yükleniyor…
İpucu göster

AVG(price) OVER()'ı eklemeniz yeterli.

3 denemeden sonra çözüm mevcut