Top vijf SQL-vensterfuncties die u moet kennen voor datawetenschapsinterviews

Bronknooppunt: 1582448

Top vijf SQL-vensterfuncties die u moet kennen voor datawetenschapsinterviews
 

SQL is de universele taal in de datawereld en de belangrijkste vaardigheid om als dataprofessional vast te leggen.

De reden waarom SQL zo belangrijk is, is dat het de belangrijkste vaardigheid is die vereist is tijdens de fase van het gegevensruzie. Veel gegevensverkenning, gegevensmanipulatie, pijplijnontwikkeling en het maken van dashboards gebeurt via SQL.

Wat geweldige datawetenschappers onderscheidt van goede datawetenschappers, is dat geweldige datawetenschappers data zo veel kunnen ruziën als de mogelijkheden van SQL toelaten. Een groot deel van het volledig kunnen gebruiken van alles wat SQL te bieden heeft, is weten hoe u vensterfuncties moet gebruiken.

Dat gezegd hebbende, laten we erin duiken!

1. Delta's met LEAD() en LAG()

 
LEAD() en LAG() worden meestal gebruikt bij het vergelijken van een periode met de vorige periode voor een bepaalde statistiek. Om een ​​paar voorbeelden te geven…

  • U kunt de delta krijgen tussen de verkoop van elk jaar en de verkoop van het voorgaande jaar
  • U kunt de delta in het aantal aanmeldingen/conversies/websitebezoeken van maand tot maand zien
  • U kunt het gebruikersverloop op maandbasis vergelijken

Voorbeeld:

De volgende query laat zien hoe u de maandelijkse procentuele verandering in kosten kunt opvragen

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. Cumulatieve sommen met SUM() of COUNT()

 
Het berekenen van lopende totalen kan eenvoudig worden gedaan via een Windows-functie die begint met SUM() of COUNT(). Dit is een krachtig hulpmiddel wanneer u de groei van een bepaalde statistiek in de loop van de tijd wilt laten zien. Meer specifiek is het nuttig in de volgende omstandigheden:

  • Krijg een lopend totaal van inkomsten en kosten in de loop van de tijd
  • Krijg een lopend totaal van de tijd die aan de app is besteed per gebruiker
  • Krijg een lopend totaal van conversies in de loop van de tijd

Voorbeeld:

Het volgende voorbeeld laat zien hoe u een cumulatieve somkolom van maandelijkse kosten kunt opnemen:

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

3. Voortschrijdende gemiddelden met AVG()

 
AVG() is echt krachtig in Windows-functies, omdat je hiermee kunt rekenen voortschrijdende gemiddelden na verloop van tijd.

Voortschrijdende gemiddelden zijn een eenvoudige, maar effectieve manier om waarden op korte termijn te voorspellen. Ze zijn ook erg handig om vluchtige curven in een grafiek glad te strijken. Over het algemeen worden voortschrijdende gemiddelden gebruikt om de algemene richting te meten waarin dingen bewegen.

Specifieker…

  • Ze kunnen worden gebruikt om de algemene trend van wekelijkse verkopen te krijgen (stijgt het gemiddelde in de loop van de tijd?). Dit zou duiden op groei als bedrijf.
  • Ze kunnen ook worden gebruikt om de algemene trend van wekelijkse conversies of websitebezoeken te krijgen.

Voorbeeld:

De volgende zoekopdracht is een voorbeeld van het verkrijgen van het voortschrijdend gemiddelde over 10 dagen voor conversies.

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

4. ROW_NUMBER()

 
ROW_NUMBER() is met name handig als u de eerste of laatste record wilt ophalen. Als je bijvoorbeeld een tabel hebt met wanneer sportschoolleden naar de sportschool zijn gekomen en je wilt de datum krijgen van de eerste dag dat ze naar de sportschool zijn gekomen, kun je PARTITEREN OP klant (naam/id) en BESTELLEN OP aankoopdatum. Om vervolgens de eerste rij te krijgen, kunt u eenvoudig filteren op de rijen met rijnummer gelijk aan één.

Voorbeeld:

Dit voorbeeld laat zien hoe u ROW_NUMBER() kunt gebruiken om de eerste datum te krijgen van wanneer elk lid (gebruiker) het bezocht.

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

Om samen te vatten, als u ooit het eerste of laatste record moet krijgen, is ROW_NUMBER() een geweldige manier om dat te bereiken.

5. Recordrangschikking met DENSE_RANK()

 
DENSE_RANK() lijkt op ROW_NUMBER() behalve dat het dezelfde rangorde retourneert voor gelijke waarden. Dichte rangschikking is best handig als het gaat om het ophalen van de toprecords, bijvoorbeeld:

  • Als je de top 10 van meest bekeken Netflix-shows deze week wilt trekken
  • Als u de top 100 gebruikers wilt krijgen op basis van uitgegeven dollars
  • Als je het gedrag van de 1000 minst actieve gebruikers wilt zien

Voorbeeld:

Als u uw topklanten wilt rangschikken op basis van totale verkopen, zou DENSE_RANK() een geschikte functie zijn om te gebruiken.

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

Bedankt voor het lezen!

 
En dat is alles! Ik hoop dat dit je helpt bij de voorbereiding van je sollicitatiegesprek - ik weet zeker dat als je deze 5 concepten door en door kent, je het geweldig zult doen als het gaat om de meeste problemen met SQL-vensterfuncties die er zijn.

Zoals altijd wens ik je veel succes met je studie!

 
 
Terence Shino is een data-enthousiasteling met 3+ jaar ervaring in SQL en 2+ jaar ervaring in Python, en een blogger op Towards Data Science en KDnuggets.

ORIGINELE. Met toestemming opnieuw gepost.

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

Tijdstempel:

Meer van KDnuggets