SQL Mülakatlarında Karşılaşabileceğiniz Yapılar: LAG ve LEAD

SQL’de LAG ve LEAD Yapıları: Zamanın Peşinde!

Serdar Tafralı
3 min readOct 14, 2024

SQL öğrenirken bazı fonksiyonlar var ki, sizi bir adım öne geçirir. İşte tam da bu noktada LAG ve LEAD fonksiyonları devreye giriyor. Bu iki fonksiyon, özellikle zaman serisi veya sıralı verilere dayalı analizlerde fazlasıyla işinize yarayacak. Üstelik, SQL mülakatlarına giriyorsanız, LAG ve LEAD yapısına mutlaka göz atmanız lazım. Hadi birlikte bu fonksiyonlara bir bakalım!

LAG Nedir?

LAG, bir satırın önceki satırdaki değerini almanızı sağlar. “Bir önceki gün ne kadar satış yaptık?” ya da “Önceki müşterinin harcaması neydi?” gibi sorulara cevap ararken yardımınıza koşar.

LAG(column_name, offset, default_value) 
OVER (PARTITION BY partition_column ORDER BY order_column)

Bir örnekle açıklayalım. Diyelim ki bir çalışan tablonuz var ve her çalışanın maaşını ve bir önceki çalışanın maaşını görmek istiyorsunuz.

Tablomuz şu şekilde:

Bu sorguyla önceki çalışanın maaşını alalım:

SELECT 
id,
name,
salary,
LAG(salary, 1, 0) OVER (ORDER BY id) AS previous_salary
FROM employees;

Alice için önceki maaş olmadığından 0 döndü. Diğer çalışanlar içinse bir önceki maaş geldi.

LEAD Nedir?

LEAD ise LAG’in tam tersi, yani sonraki satırdaki değeri almanızı sağlar. Yani, geleceği tahmin etmeye çalışıyormuş gibi düşünün! Mesela, “Sonraki günün satışları ne olacak?” sorusuna yanıt arıyorsanız, LEAD kullanabilirsiniz.

Yine aynı çalışan tablomuzda, her çalışanın maaşını ve bir sonraki çalışanın maaşını alalım:

SELECT 
id,
name,
salary,
LEAD(salary, 1, 0) OVER (ORDER BY id) AS next_salary
FROM employees;

David için sonraki bir maaş olmadığından 0 döndü.

Uygulamalı Bir Örnek: Günlük Satışlar

Bir mağazanın günlük satışlarını listelediğinizi düşünün. Hangi günün satışıyla önceki ve sonraki günün satışlarını karşılaştırabilirsiniz. Bu da size satış trendlerini görme şansı verir.

SELECT 
day,
sales,
LAG(sales, 1, 0) OVER (ORDER BY day) AS previous_day_sales,
LEAD(sales, 1, 0) OVER (ORDER BY day) AS next_day_sales
FROM daily_sales;

LAG ve LEAD fonksiyonları sayesinde hangi günün satışlarının artıp azaldığını kolayca görebiliyorsunuz.

Mülakatlarda İşinize Yarayabilir!

LAG ve LEAD fonksiyonları, SQL mülakatlarında karşınıza çıkabilecek yapılar arasında. Bu fonksiyonları doğru anlamak, sıralı veri setlerinde geçmiş ve gelecekle ilgili karşılaştırmalı analizler yapma becerinizi gösterebilir. O yüzden, SQL becerilerinizi bir adım öteye taşımak istiyorsanız bu fonksiyonları mutlaka öğrenmelisiniz!

Serdar TAFRALI

--

--

Serdar Tafralı

Dedicated and eager lifelong learner with a very solid mathematical background. Deeply passionate about Data Science and Artificial Intelligence