Las cinco funciones principales de la ventana SQL que debe conocer para las entrevistas de ciencia de datos

Nodo de origen: 1582448

Las cinco funciones principales de la ventana SQL que debe conocer para las entrevistas de ciencia de datos
 

SQL es el lenguaje universal en el mundo de los datos y es la habilidad más importante que debe dominar como profesional de datos.

La razón por la que SQL es tan importante es que es la habilidad principal que se requiere durante la fase de disputa de datos. Gran parte de la exploración de datos, la manipulación de datos, el desarrollo de canalizaciones y la creación de paneles se realizan a través de SQL.

Lo que separa a los grandes científicos de datos de los buenos científicos de datos es que los grandes científicos de datos pueden manejar los datos tanto como lo permitan las capacidades de SQL. Una gran parte de poder usar completamente todo lo que SQL tiene para ofrecer es saber cómo usar las funciones de ventana.

Dicho esto, ¡sumergámonos en ello!

1. Deltas con LEAD() y LAG()

 
LEAD() y LAG() se utilizan principalmente cuando se compara un período de tiempo con el período de tiempo anterior para una métrica determinada. Por poner algunos ejemplos…

  • Puede obtener el delta entre las ventas de cada año y las ventas del año anterior
  • Puede obtener el delta en la cantidad de registros/conversiones/visitas al sitio web mes a mes
  • Puede comparar la rotación de usuarios mensualmente

Ejemplo:

La siguiente consulta muestra cómo puede consultar el cambio porcentual mensual en los costos

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. Sumas acumulativas con SUM() o COUNT()

 
El cálculo de los totales acumulados se puede hacer simplemente a través de una función de Windows que comienza con SUM() o COUNT(). Esta es una herramienta poderosa cuando desea mostrar el crecimiento de una métrica particular a lo largo del tiempo. Más específicamente, es útil en las siguientes circunstancias:

  • Obtener un total acumulado de ingresos y costos a lo largo del tiempo
  • Obtenga un total acumulado del tiempo dedicado a la aplicación por usuario
  • Obtener un total acumulado de conversiones a lo largo del tiempo

Ejemplo:

El siguiente ejemplo muestra cómo puede incluir una columna de suma acumulativa de costos mensuales:

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

3. Promedios móviles con AVG()

 
AVG() es realmente poderoso en las funciones de Windows, ya que le permite calcular promedios móviles horas extra.

Los promedios móviles son una forma simple, pero efectiva, de pronosticar valores a corto plazo. También son extremadamente útiles para suavizar curvas volátiles en un gráfico. En general, los promedios móviles se utilizan para medir la dirección general en la que se mueven las cosas.

Más específicamente…

  • Se pueden usar para obtener la tendencia general de las ventas semanales (¿aumenta el promedio con el tiempo?). Esto indicaría crecimiento como empresa.
  • También se pueden utilizar para obtener la tendencia general de las conversiones semanales o las visitas al sitio web.

Ejemplo:

La siguiente consulta es un ejemplo de cómo obtener el promedio móvil de 10 días para las conversiones.

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

4. FILA_NUMERO()

 
ROW_NUMBER() es particularmente útil cuando desea obtener el primer o el último registro. Por ejemplo, si tiene una tabla de cuándo vinieron los miembros del gimnasio y desea obtener la fecha del primer día que vinieron al gimnasio, puede PARTICIONAR POR cliente (nombre/id) y ORDENAR POR fecha de compra. Luego, para obtener la primera fila, simplemente puede filtrar las filas con número de fila igual a uno.

Ejemplo:

Este ejemplo muestra cómo puede usar ROW_NUMBER() para obtener la primera fecha de la visita de cada miembro (usuario).

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

En resumen, si alguna vez necesita obtener el primer o el último registro, ROW_NUMBER() es una excelente manera de lograrlo.

5. Ranking de registros con DENSE_RANK()

 
DENSE_RANK() es similar a ROW_NUMBER() excepto que devuelve el mismo rango para valores iguales. La clasificación densa es bastante útil cuando se trata de recuperar los mejores registros, por ejemplo:

  • Si quieres ver los 10 programas de Netflix más vistos esta semana
  • Si desea obtener los 100 usuarios principales en función de los dólares gastados
  • Si quieres ver el comportamiento de los 1000 usuarios menos activos

Ejemplo:

Si quisiera clasificar a sus principales clientes por ventas totales, DENSE_RANK() sería una función apropiada para usar.

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

¡Gracias por leer!

 
¡Y eso es todo! Espero que esto lo ayude en la preparación de su entrevista. Estoy seguro de que si conoce estos 5 conceptos de adentro hacia afuera, lo hará muy bien cuando se trata de la mayoría de los problemas de función de ventana SQL que existen.

Como siempre, ¡les deseo lo mejor en sus esfuerzos de aprendizaje!

 
 
Terence espinilla es un entusiasta de los datos con más de 3 años de experiencia en SQL y más de 2 años de experiencia en Python, y bloguero en Towards Data Science y KDnuggets.

Original. Publicado de nuevo con permiso.

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

Sello de tiempo:

Mas de nuggets