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

PARTITION BY ile gruplama

PARTITION BY ile gruplama

Her satırda genel hesaplamalar yapmak kullanışlıdır ancak çoğu zaman yeterli değildir. Her satırda orijinal ayrıntıyı korurken, ortalamayı kategori başına veya müşteri başına hesaplamak isteyebiliriz.

OVER(...) cümlesinin içindeki PARTITION BY burada devreye giriyor.

PARTITION BY nasıl çalışır?

Kavramsal olarak GROUP BY'ye benzer şekilde davranır, ancak sonuçtaki satırları daraltmak yerine, yalnızca işlevin tek satıra ilişkin sonucu hesaplamak için çalışacağı veri "penceresinin" sınırını tanımlar.

SQL
SELECT
  product_name,
  category_id,
  price,
  AVG(price) OVER(PARTITION BY category_id) AS cat_avg_price
FROM products;

Her ürün satırı kendi ayrıntılarını tutar ve cat_avg_price sütunu, aynı kategorideki ürünlerle sınırlı olarak ortalamayı gösterir.

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

'Ürünler' tablosundan 'id', 'category_id' ve 'price' değerlerini çıkarın. Pencere işlevlerini kullanarak her bir 'kategori_kimliği' için 'fiyat'ın TOPLAMINI hesaplayan bir 'kategori_toplam' sütunu ekleyin.

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

SUM(price) OVER(PARTITION BYcategory_id) seçeneğini kullanın.

3 denemeden sonra çözüm mevcut

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

'İncelemeler' tablosundan 'product_id', 'derecelendirme' ve 'avg_product_rating'i (ürüne göre bölümlendirilmiş ortalama derecelendirme) gösterin. Tüm satırları göster.

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

AVG(derecelendirme) ve PARTITION BY ürün_kimliğini kullanın. Gerekirse NUMERIC'e aktarın.

3 denemeden sonra çözüm mevcut