Veri Bilimi Mülakatları İçin Bilmeniz Gereken İlk Beş SQL Penceresi İşlevi

Kaynak Düğüm: 1582448

Veri Bilimi Mülakatları İçin Bilmeniz Gereken İlk Beş SQL Penceresi İşlevi
 

SQL, veri dünyasındaki evrensel dildir ve bir veri uzmanı olarak elde edilmesi gereken en önemli beceridir.

SQL'in bu kadar önemli olmasının nedeni, veri tartışma aşamasında gerekli olan temel beceri olmasıdır. SQL aracılığıyla birçok veri keşfi, veri işleme, boru hattı geliştirme ve gösterge tablosu oluşturma yapılır.

Büyük veri bilimcilerini iyi veri bilimcilerinden ayıran şey, büyük veri bilimcilerinin SQL'in yeteneklerinin izin verdiği kadar verileri tartışabilmesidir. SQL'in sunduğu her şeyi tam olarak kullanabilmenin büyük bir kısmı, pencere işlevlerinin nasıl kullanılacağını bilmektir.

Bunu söyledikten sonra, hadi içine dalalım!

1. LEAD() ve LAG() ile Deltalar

 
LEAD() ve LAG() çoğunlukla belirli bir metrik için bir zaman periyodunu önceki zaman periyoduyla karşılaştırırken kullanılır. Birkaç örnek vermek gerekirse…

  • Her yılın satışları ile bir önceki yılın satışları arasındaki deltayı alabilirsiniz.
  • Aydan aya kayıt/dönüşüm/web sitesi ziyareti sayısındaki deltayı alabilirsiniz.
  • Kullanıcı kaybını aylık olarak karşılaştırabilirsiniz

Örnek:

Aşağıdaki sorgu, maliyetlerdeki aylık yüzde değişimini nasıl sorgulayabileceğinizi gösterir.

with monthly_costs as ( SELECT date , monthlycosts , LEAD(monthlycosts) OVER (ORDER BY date) as previousCosts FROM costs )SELECT date , (monthlycosts - previousCosts) / previousCosts * 100 AS costPercentChange FROM monthly_costs

2. SUM() veya COUNT() ile Kümülatif Toplamlar

 
Çalışan toplamları hesaplamak, SUM() veya COUNT() ile başlayan bir Windows işlevi aracılığıyla basitçe yapılabilir. Bu, belirli bir metriğin zaman içindeki büyümesini göstermek istediğinizde güçlü bir araçtır. Daha spesifik olarak, aşağıdaki durumlarda yararlıdır:

  • Zaman içinde geçerli bir toplam gelir ve maliyet elde edin
  • Kullanıcı başına uygulamada harcanan toplam süreyi elde edin
  • Zaman içinde değişen toplam dönüşüm elde edin

Örnek:

Aşağıdaki örnek, aylık maliyetlerin kümülatif toplamı sütununu nasıl ekleyebileceğinizi gösterir:

SELECT date , monthlycosts , SUM(monthlycosts) OVER (ORDER BY date) as cumCosts FROM cost_table

3. AVG() ile Hareketli Ortalamalar

 
AVG(), hesaplamanıza izin verdiği için Windows işlevlerinde gerçekten güçlüdür. hareketli ortalamalar mesai.

Hareketli ortalamalar, kısa vadede değerleri tahmin etmenin basit ama etkili bir yoludur. Ayrıca, bir grafikteki uçucu eğrileri yumuşatmada son derece faydalıdırlar. Genel olarak, hareketli ortalamalar, şeylerin hareket ettiği genel yönü ölçmek için kullanılır.

Daha spesifik olarak…

  • Haftalık satışların genel eğilimini elde etmek için kullanılabilirler (ortalama zamanla artıyor mu?). Bu bir şirket olarak büyümeyi gösterir.
  • Aynı şekilde, haftalık dönüşümlerin veya web sitesi ziyaretlerinin genel eğilimini elde etmek için de kullanılabilirler.

Örnek:

Aşağıdaki sorgu, dönüşümler için 10 günlük hareketli ortalamayı almaya bir örnektir.

SELECT Date , dailyConversions , AVG(dailyConversions) OVER (ORDER BY Date ROWS 10 PRECEDING) AS 10_dayMovingAverage FROM conversions

4. ROW_NUMBER()

 
ROW_NUMBER(), özellikle ilk veya son kaydı almak istediğinizde kullanışlıdır. Örneğin, spor salonu üyelerinin spor salonuna ne zaman geldiklerini gösteren bir tablonuz varsa ve spor salonuna geldikleri ilk günün tarihini almak istiyorsanız, müşteriye göre (isim/kimlik) BÖLÜM ve satın alma tarihine göre SİPARİŞ verebilirsiniz. Ardından, ilk satırı elde etmek için, rowNumber'ın bire eşit olduğu satırları filtrelemeniz yeterlidir.

Örnek:

Bu örnek, her üyenin (kullanıcının) ziyaret ettiği ilk tarihi almak için ROW_NUMBER() işlevini nasıl kullanabileceğinizi gösterir.

with numbered_visits as ( SELECT memberId , visitDate , ROW_NUMBER() OVER (PARTITION BY customerId ORDER BY purchaseDate) as rowNumber FROM gym_visits )SELECT * FROM numbered_visits WHERE rowNumber = 1

Özetlemek gerekirse, ilk veya son kaydı almanız gerekirse, ROW_NUMBER() bunu başarmanın harika bir yoludur.

5. DENSE_RANK() ile Sıralama Kaydı

 
DENSE_RANK(), eşit değerler için aynı sıralamayı döndürmesi dışında ROW_NUMBER() işlevine benzer. Yoğun sıralama, en iyi kayıtları almak söz konusu olduğunda oldukça kullanışlıdır, örneğin:

  • Bu hafta en çok izlenen 10 Netflix şovunu çekmek istiyorsanız
  • Harcanan dolar bazında ilk 100 kullanıcıyı almak istiyorsanız
  • En az aktif 1000 kullanıcının davranışını görmek istiyorsanız

Örnek:

En iyi müşterilerinizi toplam satışlara göre sıralamak istiyorsanız, DENSE_RANK() kullanmak uygun bir işlev olacaktır.

SELECT customerId , totalSales , DENSE_RANK() OVER (ORDER BY totalSales DESC) as rank FROM customers

Okuma için teşekkürler!

 
Ve hepsi bu! Umarım bu, görüşme hazırlığınızda size yardımcı olur - Bu 5 kavramı içten dışa biliyorsanız, SQL pencere işlevi sorunlarının çoğu söz konusu olduğunda harika iş çıkaracağınızdan eminim.

Her zaman olduğu gibi, öğrenme çabalarınızda size en iyisini diliyorum!

 
 
Terence Shin SQL'de 3+ yıllık deneyime ve Python'da 2+ yıllık deneyime sahip bir veri meraklısı ve Towards Data Science ve KDnuggets'ta bir blog yazarıdır.

orijinal. İzinle yeniden yayınlandı.

Kaynak: https://www.kdnuggets.com/2022/01/top-five-sql-window-functions-know-data-science-interviews.html

Zaman Damgası:

Den fazla KDNuggets