Die fünf wichtigsten SQL-Fensterfunktionen, die Sie für Data-Science-Interviews kennen sollten

Quellknoten: 1582448

Die fünf wichtigsten SQL-Fensterfunktionen, die Sie für Data-Science-Interviews kennen sollten
 

SQL ist die universelle Sprache in der Datenwelt und die wichtigste Fähigkeit, die man als Datenprofi festnageln muss.

Der Grund, warum SQL so wichtig ist, liegt darin, dass es die wichtigste Fertigkeit ist, die während der Data-Wrangling-Phase erforderlich ist. Ein Großteil der Datenexploration, Datenmanipulation, Pipeline-Entwicklung und Dashboard-Erstellung erfolgt über SQL.

Was großartige Datenwissenschaftler von guten Datenwissenschaftlern unterscheidet, ist, dass großartige Datenwissenschaftler Daten so weit verarbeiten können, wie es die Fähigkeiten von SQL zulassen. Ein großer Teil der Fähigkeit, alles, was SQL zu bieten hat, vollständig nutzen zu können, besteht darin, zu wissen, wie man Fensterfunktionen verwendet.

Wenn das gesagt ist, tauchen wir ein!

1. Deltas mit LEAD() und LAG()

 
LEAD() und LAG() werden meistens verwendet, wenn ein Zeitraum mit dem vorherigen Zeitraum für eine bestimmte Metrik verglichen wird. Um ein paar Beispiele zu nennen …

  • Sie können das Delta zwischen den Verkäufen jedes Jahres und den Verkäufen des Vorjahres erhalten
  • Sie können das Delta in der Anzahl der Anmeldungen/Conversions/Website-Besuche von Monat zu Monat erhalten
  • Sie können die Abwanderung der Benutzer monatlich vergleichen

Beispiel:

Die folgende Abfrage zeigt, wie Sie die monatliche prozentuale Kostenänderung abfragen können

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. Kumulative Summen mit SUM() oder COUNT()

 
Die Berechnung laufender Summen kann einfach über eine Windows-Funktion erfolgen, die mit SUM() oder COUNT() beginnt. Dies ist ein leistungsstarkes Tool, wenn Sie das Wachstum einer bestimmten Metrik im Laufe der Zeit zeigen möchten. Genauer gesagt ist es unter den folgenden Umständen nützlich:

  • Erhalten Sie eine laufende Summe der Einnahmen und Kosten im Laufe der Zeit
  • Rufen Sie eine laufende Gesamtzeit der pro Benutzer für die App aufgewendeten Zeit ab
  • Erhalten Sie eine laufende Summe der Conversions im Laufe der Zeit

Beispiel:

Das folgende Beispiel zeigt, wie Sie eine kumulierte Summenspalte der monatlichen Kosten einschließen können:

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

3. Gleitende Durchschnitte mit AVG()

 
AVG() ist wirklich leistungsfähig in Windows-Funktionen, da es Ihnen erlaubt zu berechnen Gleitende Durchschnitte im Laufe der Zeit.

Gleitende Durchschnitte sind eine einfache, aber effektive Möglichkeit, kurzfristige Werte zu prognostizieren. Sie sind auch äußerst nützlich, um flüchtige Kurven in einem Diagramm zu glätten. Im Allgemeinen werden gleitende Durchschnitte verwendet, um die allgemeine Richtung einzuschätzen, in die sich die Dinge bewegen.

Genauer…

  • Sie können verwendet werden, um den allgemeinen Trend der wöchentlichen Verkäufe zu erhalten (steigt der Durchschnitt im Laufe der Zeit?). Dies würde auf Wachstum als Unternehmen hindeuten.
  • Sie können auch verwendet werden, um den allgemeinen Trend der wöchentlichen Conversions oder Website-Besuche zu erhalten.

Beispiel:

Die folgende Abfrage ist ein Beispiel für das Abrufen des gleitenden 10-Tage-Durchschnitts für Conversions.

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

4. ROW_NUMBER()

 
ROW_NUMBER() ist besonders nützlich, wenn Sie den ersten oder letzten Datensatz erhalten möchten. Wenn Sie beispielsweise eine Tabelle haben, wann Fitnessstudio-Mitglieder ins Fitnessstudio kamen, und Sie das Datum des ersten Tages erhalten möchten, an dem sie ins Fitnessstudio kamen, können Sie NACH Kunde (Name/ID) PARTITIONIEREN und NACH Kaufdatum ORDERN. Um die erste Zeile zu erhalten, können Sie dann einfach nach den Zeilen mit rowNumber gleich eins filtern.

Beispiel:

Dieses Beispiel zeigt, wie Sie ROW_NUMBER() verwenden können, um das erste Datum des Besuchs jedes Mitglieds (Benutzers) zu erhalten.

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

Um es noch einmal zusammenzufassen: Wenn Sie jemals den ersten oder letzten Datensatz abrufen müssen, ist ROW_NUMBER() eine großartige Möglichkeit, dies zu erreichen.

5. Rekordranking mit DENSE_RANK()

 
DENSE_RANK() ähnelt ROW_NUMBER(), außer dass es denselben Rang für gleiche Werte zurückgibt. Das dichte Ranking ist sehr nützlich, wenn es darum geht, die besten Datensätze abzurufen, zum Beispiel:

  • Wenn Sie diese Woche die Top 10 der meistgesehenen Netflix-Shows abrufen möchten
  • Wenn Sie die 100 besten Benutzer basierend auf ausgegebenen Dollars erhalten möchten
  • Wenn Sie das Verhalten der 1000 am wenigsten aktiven Benutzer sehen möchten

Beispiel:

Wenn Sie Ihre Top-Kunden nach Gesamtumsatz einstufen möchten, wäre DENSE_RANK() eine geeignete Funktion.

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

Danke fürs Lesen!

 
Und das ist alles! Ich hoffe, dass Ihnen das bei Ihrer Vorbereitung auf das Vorstellungsgespräch hilft – ich bin mir sicher, dass Sie bei den meisten Problemen mit SQL-Fensterfunktionen gut abschneiden werden, wenn Sie diese 5 Konzepte in- und auswendig kennen.

Wie immer wünsche ich Ihnen viel Erfolg beim Lernen!

 
 
Terence Shin ist ein Daten-Enthusiast mit mehr als 3 Jahren Erfahrung in SQL und mehr als 2 Jahren Erfahrung in Python und Blogger auf Towards Data Science und KDnuggets.

Original. Mit Genehmigung erneut veröffentlicht.

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

Zeitstempel:

Mehr von KDnuggets