ROWS & RANGE Criterion
Coddy'nin SQL Journey'sinin Temeller bölümünün bir parçası — ders 69 / 72.
Şu anda, öncesinde veya sonrasında kaç satır dikkate alınacağını seçme konusunda esnek olamıyoruz. Artık ROWS & RANGE kriterleri ile mümkün. Onları kullanmak için şöyle yazarız:
OVER (ROWS BETWEEN --START-- AND --END--)
OVER (RANGE BETWEEN --START-- AND --END--)
Ve şu seçenekleri belirtebiliriz:
CURRENT ROW- mevcut satırn PRECEDING- mevcut satırdan önceki satırlarn FOLLOWING- mevcut satırdan sonraki satırlar
ROWS & RANGE arasındaki fark, ROWS kriterinin değerleri umursamaması, sadece konumları dikkate almasıdır; oysa RANGE pencereyi satır konumları yerine değer aralıkları açısından tanımlar.
RANGE için ORDER BY --column_name-- belirtmemiz gerekir, çünkü aksi takdirde pencereyi nasıl seçeceğini bilemez.
Örneğin:
ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWINGBurada mevcut satırı, ondan önceki satırı ve sonraki satırı içeren bir pencere oluşturur.
RANGE BETWEEN 1 PRECEDING AND 1 FOLLOWING ORDER BY levelsBurada her seviye için (artan sırada sıralanmış) mevcut seviye, bir önceki seviye ve bir sonraki seviyeyi içeren bir pencere oluşturur. Mevcut seviye 5 ise, 4, 5 ve 6 seviyelerini içerir.
Not: RANGE BETWEEN kullanımı pencerenizde daha fazla satırın dahil edilmesine neden olabilir, çünkü aralıktaki değerlerle aynı değerleri paylaşan tüm satırları içerir; oysa ROWS BETWEEN her zaman aynı sayıda satırı içerir (veri kümesinde mevcut oldukları sürece).
Ayrıca RANGE tarih sütunlarını desteklemez.
İşte ROWS ile RANGE arasındaki farkı göstermek için basit bir örnek:
ROWS kullanılarak:
SELECT employee_name, salary,
AVG(salary) OVER (
ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING
) as avg_salary_rowsRANGE Kullanarak:
SELECT employee_name, salary,
AVG(salary) OVER (
ORDER BY salary
RANGE BETWEEN 1000 PRECEDING AND 1000 FOLLOWING
) as avg_salary_rangeGörev
KolayMevcut tablolar ve sütunlar:
<strong>newspapers</strong>:<strong>date</strong>,<strong>num_newspapers</strong>
Bu meydan okumada üretim için gazetelerimiz var. Mevcut satırdan iki gün önce ve bir gün sonra basılan gazetelerin ortalamasını bilmek istiyoruz. Ayrıca, mevcut tarihten itibaren ve ondan önceki üç günün tamamında basılan gazetelerin maksimum ve minimum sayıları arasındaki farkı bilmek istiyoruz. Bu sütunları sırasıyla avg_newspapers ve diff_newspapers olarak adlandırın.
Kopya kağıdı
ROWS ve RANGE'i pencere fonksiyonlarında esnek pencere çerçevelerini tanımlamak için kullanın:
ROWS - satır konumlarına göre pencereyi tanımlar:
OVER (ROWS BETWEEN --START-- AND --END--)RANGE - değer aralıklarına göre pencereyi tanımlar (ORDER BY gerektirir):
OVER (ORDER BY column_name RANGE BETWEEN --START-- AND --END--)Pencere sınır seçenekleri:
CURRENT ROW- mevcut satırn PRECEDING- mevcut öncesinde n satır/değern FOLLOWING- mevcut sonrasında n satır/değer
Örnekler:
-- ROWS: includes current row + 1 before + 1 after (by position)
ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING
-- RANGE: includes values within range (by value)
ORDER BY levels
RANGE BETWEEN 1 PRECEDING AND 1 FOLLOWINGÖnemli farklar:
ROWS- satır konumlarına dayalı, her zaman aynı sayıda satırRANGE- değerlere dayalı, aynı değerlere sahip daha fazla satır içerebilirRANGEtarih sütunlarını desteklemez
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() Function3Specific 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 columns9Multiple tables
Basic Join Part 1Basic Join Part 2Recap - JoinSelf joinRecap - Self JoinUnionSimplify queries, WITH keywordRecap - With QueriesRecap - Real Estate Contractor12Window Functions part 2
RANK & DENSE_RANK FunctionsRecap - RANK & DENSE_RANKNTILE FunctionAggregation FunctionsROWS & RANGE Criterion