0Pricing
SQL Interview Prep · Ders

Çok Adımlı Dönüşüm Hunisi Oluşturma

Her sıralı adıma ulaşan kullanıcıların sayılması ve adım dönüşüm oranlarının hesaplanması.

Çok Adımlı Dönüşüm Hunisi Oluşturma, CoddyKit'te ücretsiz bir SQL Interview Prep dersidir. Bu, 4 dersinin 1. 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 Interview Prep öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. SQL Interview Prep kursu toplamda 4 dersten oluşur.

Bir Huni Sorusu Gerçekte Neyi Sınar

Bir mülakatçı "bana bir kayıt hunisi oluştur" dediğinde, her sıralı adıma ulaşan benzersiz kullanıcıları sayıp adımlar arasındaki kaybı ifade edip edemediğinizi sınar.

Bir hunide visit -> signup -> activate -> purchase gibi aşamalar bulunur. Genellikle beklenen çıktı, her adım için bir satır ile kullanıcı sayısı ve dönüşüm oranıdır.

  • Kullanıcıları sayın, etkinlikleri değil (bir kullanıcının bir etkinliği iki kez gerçekleştirmesi yine tek kullanıcı sayılır).
  • Adımlar sıralıdır; 3. adıma ulaşmak, 1. ve 2. adımlardan geçtiğiniz anlamına gelir.

Size Verilecek Etkinlik Tablosu

Hemen her huni sorusunda, uzun biçimde hazırlanmış tek bir etkinlikler tablosu verilir. Şu yapıyı düşünün:

  • user_id eylemi gerçekleştiren kullanıcı
  • event_name 'ziyaret', 'kayıt', 'satın alma' gibi değerler
  • event_time bir zaman damgası

Her eylem için bir satır bulunur. Göreviniz, bunu adım adım bir sayıya dönüştürmektir. SQL yazmaya başlamadan önce etkinlik adlarının tam biçimini her zaman mülakatçıyla doğrulayın.

CREATE TABLE events (
  user_id    INT,
  event_name VARCHAR(50),
  event_time TIMESTAMP
);

Tek Bir Adımdaki Kullanıcıları Sayma

Basit başlayın: tek bir adıma kaç benzersiz kullanıcı ulaştı? Etkinlik adına göre filtre uygulayarak COUNT(DISTINCT user_id) kullanın.

Bu, her huninin yapı taşıdır. Tek bir adımı temiz biçimde sayabiliyorsanız hepsini de sayabilirsiniz.

SELECT COUNT(DISTINCT user_id) AS users_who_signed_up
FROM events
WHERE event_name = 'signup';

Tüm Adımlar İçin Koşullu Toplama

Mülakatta verilecek temiz yanıt, koşullu toplama kullanarak her adımı tek geçişte sayar: COUNT(DISTINCT ...) içinde bir CASE.

Her adım için, etkinliği o adımla eşleşen benzersiz kullanıcıları sayın. Tek tarama, tek satır adım toplamı.

SELECT
  COUNT(DISTINCT CASE WHEN event_name = 'visit'    THEN user_id END) AS step1_visit,
  COUNT(DISTINCT CASE WHEN event_name = 'signup'   THEN user_id END) AS step2_signup,
  COUNT(DISTINCT CASE WHEN event_name = 'purchase' THEN user_id END) AS step3_purchase
FROM events;

Gizli Hata: Adımlar Sıralı Değil

Az önce gördüğünüz sorgunun, mülakatçıların çok sevdiği bir tuzağı var. Bu sorgu, verilerde hiç 'ziyaret' etmemiş veya kayıt olmamış olsa bile 'satın alma' etkinliğini gerçekleştiren herkesi sayar.

Gerçek bir huni, sonraki her adımın önceki adımın bir alt kümesi olmasını gerektirir. Etkinlikleri bağımsız biçimde saymak, huni için mantıksal olarak imkânsız olmasına rağmen 3. adımın 2. adımdan büyük çıkmasına neden olabilir.

Düzeltme: her kullanıcının adımlarını birbiriyle ilişkilendirin; bunu genellikle önce kullanıcı başına tek satıra indirerek yaparsınız.

Bayraklarla Kullanıcı Başına Tek Satır

Sağlam yaklaşım şudur: etkinlik günlüğünü kullanıcı başına tek satıra indirin ve her adımı daha önce gerçekleştirip gerçekleştirmediğini gösteren bir mantıksal bayrak (0/1 olarak) ekleyin. MAX(CASE ...), uzun etkinlik günlüğünü kullanıcı başına geniş bir özete dönüştürür.

WITH user_steps AS (
  SELECT
    user_id,
    MAX(CASE WHEN event_name = 'visit'    THEN 1 ELSE 0 END) AS did_visit,
    MAX(CASE WHEN event_name = 'signup'   THEN 1 ELSE 0 END) AS did_signup,
    MAX(CASE WHEN event_name = 'purchase' THEN 1 ELSE 0 END) AS did_purchase
  FROM events
  GROUP BY user_id
)
SELECT * FROM user_steps;

Adım Sırasını Zorunlu Kılma

Şimdi huni kuralını uygulayın: bir kullanıcı, kendisinden önceki her adımı da gerçekleştirmişse N. adım için sayılır. 'Satın alma' adımına ulaşmak, yalnızca kullanıcı hem ziyaret etmiş hem de kayıt olmuşsa anlamlıdır.

Her adımın öncekinin gerçek bir alt kümesi olması için bayrakları, ön koşulları VE koşullarıyla birlikte kullanarak toplayın.

WITH user_steps AS (
  SELECT
    user_id,
    MAX(CASE WHEN event_name = 'visit'    THEN 1 ELSE 0 END) AS did_visit,
    MAX(CASE WHEN event_name = 'signup'   THEN 1 ELSE 0 END) AS did_signup,
    MAX(CASE WHEN event_name = 'purchase' THEN 1 ELSE 0 END) AS did_purchase
  FROM events
  GROUP BY user_id
)
SELECT
  SUM(did_visit)                                       AS step1_visit,
  SUM(CASE WHEN did_visit = 1 AND did_signup = 1 THEN 1 ELSE 0 END)                       AS step2_signup,
  SUM(CASE WHEN did_visit = 1 AND did_signup = 1 AND did_purchase = 1 THEN 1 ELSE 0 END)  AS step3_purchase
FROM user_steps;

Sayıları Düzenli Uzun Sonuca Dönüştürme

Mülakatçılar genellikle geniş tek bir satır yerine adım başına bir satırı tercih eder. Geniş biçimdeki toplamları, sıralama için bir adım numarası ekleyerek küçük bir UNION ALL ile uzun biçime dönüştürün.

Bu, bir sonraki adımda dönüşüm oranı hesaplamalarını ve grafik oluşturmayı çok kolaylaştırır.

WITH funnel AS (
  SELECT 1 AS step_no, 'visit'    AS step_name, 1000 AS users UNION ALL
  SELECT 2,           'signup',                   420  UNION ALL
  SELECT 3,           'purchase',                 95
)
SELECT step_no, step_name, users
FROM funnel
ORDER BY step_no;

Adımdan Adıma Dönüşüm Oranı

İki oran önemlidir ve mülakatçılar hangisini kastettiğinizi soracaktır:

  • Adım dönüşümü: bu adımdaki kullanıcıların, önceki adımdaki kullanıcılara oranı.
  • Genel dönüşüm: bu adımdaki kullanıcıların huninin üst kısmındaki kullanıcı sayısına oranı.

Adımdan adıma oran için önceki adımın sayısını almak üzere LAG kullanın. Tam sayı bölmesiyle karşılaşmamak için ondalık türe dönüştürün.

WITH funnel AS (
  SELECT 1 AS step_no, 'visit'    AS step_name, 1000 AS users UNION ALL
  SELECT 2,           'signup',                   420  UNION ALL
  SELECT 3,           'purchase',                 95
)
SELECT
  step_name,
  users,
  ROUND(100.0 * users / LAG(users) OVER (ORDER BY step_no), 1) AS step_conv_pct
FROM funnel
ORDER BY step_no;

Huninin Üstünden Genel Dönüşüm

Genel dönüşüm için her adımı ilk adımın sayısına bölün. Sıralı huni üzerinde kullanılan FIRST_VALUE, bu üst sayıyı her satıra taşır.

Tam sayı bölmesini önlemek için 100.0 ile çarptığınızı mülakatçıya her zaman belirtin.

WITH funnel AS (
  SELECT 1 AS step_no, 'visit'    AS step_name, 1000 AS users UNION ALL
  SELECT 2,           'signup',                   420  UNION ALL
  SELECT 3,           'purchase',                 95
)
SELECT
  step_name,
  users,
  ROUND(100.0 * users / FIRST_VALUE(users) OVER (ORDER BY step_no), 1) AS overall_pct
FROM funnel
ORDER BY step_no;

Tüm Huniyi Bir Araya Getirme

Mülakatçıların beklediği uçtan uca yanıt şudur: kullanıcı başına bayraklara indirin, sırayı zorunlu kılın, uzun biçime dönüştürün ve ardından her iki oranı hesaplayın. Her CTE'nin amacını belirterek süreci sesli biçimde açıklayın.

Bu yapı ölçeklenebilir: bir bayrak ve bir UNION ALL satırı ekleyerek yeni bir adım ekleyebilirsiniz.

WITH user_steps AS (
  SELECT user_id,
    MAX(CASE WHEN event_name = 'visit'    THEN 1 ELSE 0 END) AS s1,
    MAX(CASE WHEN event_name = 'signup'   THEN 1 ELSE 0 END) AS s2,
    MAX(CASE WHEN event_name = 'purchase' THEN 1 ELSE 0 END) AS s3
  FROM events GROUP BY user_id
),
totals AS (
  SELECT 1 AS step_no, 'visit'    AS step_name, SUM(s1) AS users FROM user_steps UNION ALL
  SELECT 2, 'signup',   SUM(CASE WHEN s1=1 AND s2=1 THEN 1 ELSE 0 END) FROM user_steps UNION ALL
  SELECT 3, 'purchase', SUM(CASE WHEN s1=1 AND s2=1 AND s3=1 THEN 1 ELSE 0 END) FROM user_steps
)
SELECT step_name, users,
  ROUND(100.0 * users / LAG(users) OVER (ORDER BY step_no), 1) AS step_pct
FROM totals ORDER BY step_no;

Kısa Kontrol

Bir mülakatçı, huninizde 'satın alma' adımında 95 kullanıcı olduğunu ancak 'kayıt' adımında yalnızca 80 kullanıcı bulunduğunu fark ediyor. En olası neden nedir?

Özet: Çok Adımlı Huniler

Artık mülakatların beklediği biçimde bir huni oluşturabilirsiniz:

  • Ham etkinlikleri değil, sıralı her adım için benzersiz kullanıcıları sayın.
  • Etkinlik günlüğünü MAX(CASE ...) bayraklarıyla kullanıcı başına tek satıra indirin.
  • Her adımın öncekinin bir alt kümesi olmasını sağlayın.
  • Tam sayı bölmesine dikkat ederek adımdan adıma (LAG) ve genel (FIRST_VALUE) dönüşümü hesaplayın.

Sıradaki konu: bu adımların gerçekten doğru sırada ve belirli bir zaman aralığı içinde gerçekleştiğinden emin olmak.

Sıkça Sorulan Sorular

“Çok Adımlı Dönüşüm Hunisi Oluşturma” dersi ücretsiz mi?

Evet — “Çok Adımlı Dönüşüm Hunisi Oluşturma” 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 Interview Prep kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. SQL Interview Prep kursu toplamda 4 dersten oluşur.

“Çok Adımlı Dönüşüm Hunisi Oluşturma” dersinde ne öğreneceğim?

Her sıralı adıma ulaşan kullanıcıların sayılması ve adım dönüşüm oranlarının hesaplanması. SQL Interview Prep 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 Interview Prep öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te SQL Interview Prep, 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 1. dersidir.

“Çok Adımlı Dönüşüm Hunisi Oluşturma” 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 Interview Prep dersinde kod yazıp çalıştırabilir miyim?

Evet. Her SQL Interview Prep 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. Çok Adımlı Dönüşüm Hunisi Oluşturma
  2. Sıralı Etkinlikler ve Zaman Pencereleri
  3. A/B Testi Ataması ve Ölçümleri
  4. SQL'de Artış, Anlamlılık ve Güvenlik Kontrolleri
← SQL Interview Prep Sayfasına Dön