Ana içeriğe geç
Kesit SQL
Orta · Veri Bilimi

SQL ile tanımlayıcı istatistik

Ortalama, medyan, standart sapma, varyans, mod; SQL türlerine göre fonksiyon adları.

Uygulamada aç, 3 alıştırmayı çözÜcretsiz, hesap gerekmez, kurulum yok.

Bu sayfa dersin okuma sürümüdür. Metin bir kutuyu çalıştırmanı ya da adıma geçmeni söylüyorsa dersi uygulamada aç.

Veriyi tanımak

Modelden önce dağılımı anlamak gerekir. İstatistik fonksiyonlarının adları SQL türüne göre değişir:

ÖlçüSQL ServerPostgreSQLMySQLOracle
OrtalamaAVG(x)
Standart sapma (örneklem)STDEV(x)STDDEV(x)STDDEV_SAMP(x)STDDEV(x)
Varyans (örneklem)VAR(x)VARIANCE(x)VAR_SAMP(x)VARIANCE(x)
MedyanPERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY x) OVER ()PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY x)yok (pencere fonksiyonuyla hesaplanır)MEDIAN(x)
Bu uygulamadaSQLite'ta istatistik fonksiyonu yoktur; uygulama MEDIAN, STDDEV, VARIANCE fonksiyonlarını ekler. SQL Server'da PERCENTILE_CONT bir pencere fonksiyonudur; bu yüzden medyanı ayrı bir CTE'de hesaplayıp birleştiririz (SQL Server sekmesine bak).
WITH sepet AS (
  SELECT o.order_id, SUM(oi.quantity * oi.unit_price * (1 - oi.discount)) AS tutar
  FROM orders o JOIN order_items oi ON oi.order_id = o.order_id
  WHERE o.status = 'delivered'
  GROUP BY o.order_id
)
SELECT COUNT(*) AS n,
       ROUND(AVG(tutar), 1) AS ortalama,
       ROUND(MEDIAN(tutar), 1) AS medyan,
       ROUND(STDDEV(tutar), 1) AS std
FROM sepet;

Ortalama medyandan çok büyükse dağılım sağa çarpıktır (birkaç büyük sepet ortalamayı yukarı çeker). E-ticarette çok yaygındır; bu yüzden medyan raporlamak çoğu zaman daha dürüsttür.

Mod (en sık değer)

SELECT quantity, COUNT(*) AS frekans
FROM order_items
GROUP BY quantity
ORDER BY frekans DESC
LIMIT 1;

Varyansı elle hesaplamak

Formül: Var = (Σx² − (Σx)²/n) / (n − 1). Fonksiyonun olmadığı ortamlarda işe yarar:

SELECT (SUM(price * price) - SUM(price) * SUM(price) / COUNT(*)) / (COUNT(*) - 1) AS varyans_elle,
       VARIANCE(price) AS varyans_fonk
FROM products;
Alıştırmalara geç (3)