LEAD & LAG Functions
Coddy'nin SQL Journey'sinin Temeller bölümünün bir parçası — ders 61 / 72.
LEAD ve LAG fonksiyonları, mevcut satırın değerine n adım geriye veya n adım ileriye erişmemizi sağlar.
Örneğin, mevcut satırdaki bir şirketin geliri ile bir ay önceki arasındaki oranını hesaplamak istersek, önceki aydan değeri çıkarabiliriz:
| id | revenue | month |
| 1 | 532 | 5 |
| 2 | 492 | 6 |
| 3 | 393 | 7 |
| 4 | 723 | 8 |
SELECT id, revenue, LAG(revenue, 1) OVER (ORDER BY MONTH) as prev_month_revenue
FROM table1 ORDER BY idBu, aşağıdaki tabloyu oluşturacaktır:
| id | revenue | prev_month_revenue |
| 1 | 532 | |
| 2 | 492 | 532 |
| 3 | 393 | 492 |
| 4 | 723 | 393 |
Bu şekilde prev_month_revenue/revenue oranını hesaplayabiliriz.
Eğer bunun yerine LEAD fonksiyonunu kullansaydık, her satırın bir sonraki ayın gelirini alırdı:
SELECT id, revenue, LEAD(revenue, 1) OVER (ORDER BY MONTH) as next_month_revenue
FROM table1 ORDER BY id| id | revenue | next_month_revenue |
| 1 | 532 | 492 |
| 2 | 492 | 393 |
| 3 | 393 | 723 |
| 4 | 723 |
Görev
KolayMevcut tablolar ve sütunlar:
<strong>air_conditioners</strong>:<strong>id</strong>,<strong>efficiency</strong>,<strong>strength</strong>,<strong>month</strong>
Her klima cihazının verimliliğini bir öncekiyle karşılaştırın.
Her klima cihazının verimliliğini, kurulan bir önceki klima cihazının verimliliğiyle birlikte gösteren bir sorgu yazın (id'ye göre). Ayrıca, mevcut ve önceki klima cihazı arasındaki verimlilik farkını hesaplayın. Sonucu <strong>id</strong> ve <strong>efficiency</strong> göre artan sırada sıralayın.
Beklenen çıktı sütunları:
idefficiencyprevious_efficiency(using LAG)efficiency_difference(current efficiency - previous efficiency)
Son olarak bu sorgudan sonra, previous_efficiency boş olan veya efficiency_difference boş olan satırı filtreleyin, şöyle:
SELECT * FROM (
-- Your query here
)
WHERE previous_efficiency != 0Kopya kağıdı
LAG ve LEAD fonksiyonları, önceki veya sonraki satırlardaki değerlere erişim sağlar:
LAG fonksiyonu - önceki satırdan değer alır:
LAG(column_name, n) OVER (ORDER BY column)LEAD fonksiyonu - sonraki satırdan değer alır:
LEAD(column_name, n) OVER (ORDER BY column)LAG kullanarak önceki ayın gelirini alma örneği:
SELECT id, revenue, LAG(revenue, 1) OVER (ORDER BY month) as prev_month_revenue
FROM table1 ORDER BY idLEAD kullanarak sonraki ayın gelirini alma örneği:
SELECT id, revenue, LEAD(revenue, 1) OVER (ORDER BY MONTH) as next_month_revenue
FROM table1 ORDER BY idİlk satır LAG değeri için NULL'a sahip olacak ve son satır LEAD değeri için NULL'a sahip olacak.
Kendin dene
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Temeller bölümündeki tüm dersler
4More Keywords
The IN keywordThe BETWEEN keywordThe LIKE keywordThe AS keywordRecap - Cellphone Models2Conditions
Conditions BasicsThe AND keywordThe OR keywordThe NOT keywordMultiple Conditions CombinedParenthesisBooleans5Arithmetic Operations
Mathematical OperatorsMathematical ColumnsThe Modulo OperationThe ROUND() Function8Statistics
Built-In Aggregate Part 1Built-In Aggregate Part 2Grouping Part 1Grouping Part 2Subqueries Part 1Subqueries Part 2Recap - Total Gain ShopRecap - Scooter ShopRecap - Coffee Shop11Window Functions part 1
ROW_NUMBER functionORDER BY criterionPARTITION BY criterionPARTITION & ORDERLEAD & LAG FunctionsRecap - LEAD & LAGRecap - PicturesRecap - Boxes3Specific Return Format
Null valuesSort Results Part 1Sort Results Part 2Recap - Cyber Security FirmLimit number of recordsRecap - Vehicle Factory6Intro Challenges
Recap - Parliamentary ElectionRecap - Police Criminal ArrestRecap - Bar Beverage ContainerRecap - Engineer new columns