COMPUTER ENGINEER

Örneklere git
Blog
SQL Server / T-SQL6 dk çalışma
31/ 65

İleri sorgu teknikleri

Kümülatif toplam ve hareketli ortalama

Frame seçimi metriğin anlamını belirler.

AnlaÖrneği inceleKendin uygula

Kavramı anlayalım

Kümülatif toplam geçmiş satırlardan mevcut satıra kadar birikimi gösterir. ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW, fiziksel sıra içindeki satırları açıkça tanımlar. Eşit sıralama değerlerinde RANGE aynı değere sahip satırları birlikte değerlendirebilir.

ROWS BETWEEN 2 PRECEDING AND CURRENT ROW üç satırlık hareketli penceredir; üç günlük pencere olmak zorunda değildir. Veri setinde bazı tarihler yoksa “son üç gün” için takvim tablosu ve gün seviyesinde hazırlık gerekir. Önce günlük grain’i kur, sonra pencereyi uygula.

Başlangıç günlerinde pencere tam dolu değildir; ortalama mevcut satır sayısından hesaplanır. Eksik günleri sıfır satış sayıp saymama kararını ölçünün iş tanımına bağla.

NERESİNDE KULLANIRSIN?

Biriken satış, son kayıtların ortalaması ve dönem karşılaştırmaları için.

SIK YAPILAN HATA

Üç satırlık pencereyi veride tarih boşlukları varken üç gün diye adlandırmak.

01 / UYGULAMA

Aynı konu. Üç farklı derinlik.

T-SQL / SQL Server 2019+
SELECT ProductId, Stock, SUM(Stock) OVER (ORDER BY ProductId ROWS UNBOUNDED PRECEDING) AS RunningStock FROM lab.Product ORDER BY ProductId;

Ürün sırasına göre stok toplamını biriktirir.

Bu sayfa SQL çalıştırmaz. Örnekleri indirilebilir SqlStudioLab veritabanında, SSMS’de uygula. Geçici tablo örneklerini yeniden çalıştırırken yalnız ilgili #tabloyu temizle. VIEW, procedure ve function örnekleri lab’da kalıcı nesne oluşturur; üretim bağlantısı kullanma.

02 / SIRA SENDE

Önce kendin dene.

Maaşların çalışan kimliğine göre kümülatif toplamını getir.

Çözümü ve açıklamasını göster
Açıklamalı çözüm
SELECT EmployeeId, Salary, SUM(Salary) OVER (ORDER BY EmployeeId ROWS UNBOUNDED PRECEDING) AS RunningSalary FROM lab.Employee ORDER BY EmployeeId;

Bu sıra yalnız öğretim içindir; gerçek maaş analizi için anlamlı iş sırasını ayrıca belirle.