0Pricing
SQL Academy · Ders

Gerçek Dünya Raporlama Kalıpları

Pencere işlevleriyle elde tutma eğrileri, kategori başına en iyi N öğe ve oturumlaştırma gibi klasik panoları uygulayın.

Gerçek Dünya Raporlama Kalıpları, CoddyKit'te ücretsiz bir SQL Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, SQL Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. SQL Academy kursu toplamda 4 dersten oluşur.

Kalıp: Grup Başına İlk N

Kullanıcı başına en iyi 3 sipariş:

WITH ranked AS (
  SELECT *, ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY total DESC) AS rn
  FROM orders
)
SELECT * FROM ranked WHERE rn <= 3;

Kalıp: Birikimli Toplamlar

Zaman içindeki birikimli gelir:

SELECT day, revenue,
       SUM(revenue) OVER (ORDER BY day) AS running_total
FROM daily_revenue;

Kalıp: İlk Gerçekleşme

Her kullanıcının her eylemi ilk gerçekleştirdiği zaman:

SELECT user_id, action, MIN(ts) AS first_at
FROM events
GROUP BY user_id, action;

-- Or with window functions for full row:
WITH firsts AS (
  SELECT *, ROW_NUMBER() OVER (PARTITION BY user_id, action ORDER BY ts) AS rn
  FROM events
)
SELECT * FROM firsts WHERE rn = 1;

Kalıp: Kohort Tutma

Kullanıcıları kayıt oldukları haftaya göre gruplayın, N. haftaya göre tutma oranını hesaplayın:

WITH cohorts AS (
  SELECT id AS user_id, date_trunc('week', created_at) AS cohort_week
  FROM users
),
activities AS (
  SELECT user_id, date_trunc('week', ts) AS active_week FROM events
)
SELECT c.cohort_week,
       (a.active_week - c.cohort_week) / 7 AS week_offset,
       COUNT(DISTINCT a.user_id) AS active
FROM cohorts c
JOIN activities a USING (user_id)
WHERE a.active_week >= c.cohort_week
GROUP BY c.cohort_week, week_offset
ORDER BY c.cohort_week, week_offset;

Kalıp: Dönüşüm Hunisi Analizi

Her adıma kaç kullanıcının ulaştığı:

SELECT
  COUNT(*)                                  AS signed_up,
  COUNT(*) FILTER (WHERE first_login_at IS NOT NULL) AS logged_in,
  COUNT(*) FILTER (WHERE first_purchase_at IS NOT NULL) AS purchased
FROM users;

Kalıp: Oturumlara Ayırma

Aralık 30 dakikadan uzunsa olayları oturumlar hâlinde gruplayın:

WITH gaps AS (
  SELECT user_id, ts,
    CASE
      WHEN ts - LAG(ts) OVER (PARTITION BY user_id ORDER BY ts)
           > INTERVAL '30 min'
      THEN 1 ELSE 0
    END AS new_session
  FROM events
)
SELECT user_id, ts,
       SUM(new_session) OVER (PARTITION BY user_id ORDER BY ts) AS session_id
FROM gaps;

Kalıp: Dönemden Döneme

Geçerli ayı önceki ayla karşılaştırın:

SELECT month, revenue,
       LAG(revenue) OVER (ORDER BY month) AS prev_month,
       revenue - LAG(revenue) OVER (ORDER BY month) AS delta,
       (revenue::FLOAT / NULLIF(LAG(revenue) OVER (ORDER BY month), 0) - 1) * 100 AS pct_change
FROM monthly_revenue
ORDER BY month;

Kalıp: Döndürülmüş Çıktı

FILTER ile geniş biçimli çıktı:

SELECT user_id,
       SUM(amount) FILTER (WHERE month = '2024-01') AS jan,
       SUM(amount) FILTER (WHERE month = '2024-02') AS feb,
       SUM(amount) FILTER (WHERE month = '2024-03') AS mar
FROM monthly_spend
GROUP BY user_id;

Kalıp: Bugünün Etkin Kullanıcıları

DAU / WAU / MAU:

SELECT
  COUNT(DISTINCT user_id) FILTER (WHERE ts >= NOW() - INTERVAL '1 day')  AS dau,
  COUNT(DISTINCT user_id) FILTER (WHERE ts >= NOW() - INTERVAL '7 days') AS wau,
  COUNT(DISTINCT user_id) FILTER (WHERE ts >= NOW() - INTERVAL '30 days') AS mau
FROM events;

Kalıp: Boşlukları Doldurma

Olay bulunmayan günler eksik görünmek yerine 0 göstermelidir:

SELECT day, COALESCE(COUNT(e.id), 0) AS events
FROM generate_series(CURRENT_DATE - 30, CURRENT_DATE, INTERVAL '1 day') AS day
LEFT JOIN events e ON date_trunc('day', e.ts) = day
GROUP BY day
ORDER BY day;

İçgörü için Pencere İşlevlerini Birleştirme

Tek bir sorguda birden çok pencereli sütun — okunabilir ve hızlı:

SELECT day, revenue,
       LAG(revenue) OVER w               AS prev,
       AVG(revenue) OVER (ORDER BY day ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) AS avg_7d,
       SUM(revenue) OVER (ORDER BY day)  AS running_total
FROM daily_revenue
WINDOW w AS (ORDER BY day)
ORDER BY day;

Özet

Raporların çoğu birkaç kalıptan oluşur: ilk N, birikimli toplamlar, kohortlar, huniler, oturumlara ayırma, dönemden döneme karşılaştırmalar, döndürmeler ve boşluk doldurma. Bunlarda ustalaştığınızda, SQL'in gerektirdiği her gösterge tablosunu oluşturabilirsiniz.

Hızlı Kontrol

"Kategori başına en iyi 5 ürün" raporu oluşturuyorsunuz. Hangi deyimsel SQL kalıbını kullanırsınız?

Sıkça Sorulan Sorular

“Gerçek Dünya Raporlama Kalıpları” dersi ücretsiz mi?

Evet — “Gerçek Dünya Raporlama Kalıpları” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve SQL Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. SQL Academy kursu toplamda 4 dersten oluşur.

“Gerçek Dünya Raporlama Kalıpları” dersinde ne öğreneceğim?

Pencere işlevleriyle elde tutma eğrileri, kategori başına en iyi N öğe ve oturumlaştırma gibi klasik panoları uygulayın. SQL Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

SQL Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te SQL Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.

“Gerçek Dünya Raporlama Kalıpları” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu SQL Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her SQL Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Çerçeve Maddeleri: ROWS ve RANGE
  2. Çerçeve Pencereleriyle LAG/LEAD
  3. NTILE ve Cume_Dist ile Kovalara Ayırma
  4. Gerçek Dünya Raporlama Kalıpları
← SQL Academy Sayfasına Dön