[SQL] explicarlos TMD algunas preguntas de la entrevista de análisis de datos populares

Reproducido Fuente: https://mp.weixin.qq.com/s/Qg1Bacw5ta9Jnbs6ImqAZw

 

fondo

Sql hay una clase de funciones llamadas funciones de agregación, tales como el recuento, sum, avg, min, max , estas funciones pueden ser múltiples filas de datos de acuerdo con la estructura de agregado en una línea, fila de datos general antes del agregado es mayor que la línea de datos después de la agregación. Y a veces no sólo queremos los datos antes de la agregación, después de la agregación de los datos que quieren, cuando introdujeron esta función de ventana .

 

Siguiendo algunas preguntas cara TMD explican cómo utilizar la función de ventana. El conocimiento se refiere a las funciones de ventana para la clasificación, agrupación consulta al usuario para la función de ventana para la función de ventana de análisis offset, cada uno va a preguntas contestadas por la cara un tema de fondo.

 

texto

1, una toma de plataforma superior preguntas de la entrevista analista de datos. User_goods_table tabla de datos de transacción existente de la siguiente manera:

  • Nombre de usuario nombre_usuario

  • goods_kind usuario ordenó categoría llevar

 

Ahora el jefe quiere saber todos los usuarios a comprar comida para llevar distribución categoría de preferencia, y quitar cada usuario a comprar hasta la categoría de comida para llevar es cuál.

requisitos de salida son los siguientes:

  • Nombre de usuario nombre_usuario

  • goods_kind la mayoría de los usuarios a comprar comida para llevar categoría

Ideas, determinan usando una función de ventana para cada usuario row_number número de clasificación para su posterior distribución de cada categoría, y eliminan la primera categoría clasificada es decir, el usuario compra la categoría más comida para llevar.

la solución del problema de referencia :

select b.user_name,b.goods_kind from

(select user_name,goods_kind,row_number() over(partition by user_name order by count(goods_kind) desc ) as rank from user_goods_table) b where b.rank =1 

 

2, una plataforma de pago principales preguntas de la entrevista de análisis de datos. User_sales_table tabla de datos de transacción existente de la siguiente manera:

  • Nombre de usuario nombre_usuario

  • la cantidad de pago del usuario pay_amount

Ahora el jefe quiere saber el 20% de la cantidad pagada del usuario anterior.

requisitos de salida son los siguientes:

  • nombre de usuario nombre_usuario (el 10% superior de los usuarios)

Ideas, NTILE usando funciones de ventana correspondientes a cada usuario y la cantidad de pago en 5 grupos (cada grupo de modo que hay 1/5), para tomar un primer paquete de usuario en el puesto no pagan antes de que el grupo de usuarios es decir 20% de la cantidad anterior. (Tenga en cuenta que esto es el 20% de la demanda antes de que el usuario en lugar de que el usuario debe pagar la parte superior 20)

la solución del problema de referencia :

select b.user_name from (select user_name,ntile(5) over(order by sum(pay_amount) desc) as levelfrom user_sales_table group by user_name ) b where b.level = 1

 

3, la parte superior de una pequeña preguntas de la entrevista análisis de datos de la plataforma de vídeo. Existente de usuario de inicio de sesión de mesa user_login_table de la siguiente manera:

  • Nombre de usuario nombre_usuario

  • Fecha Hora de inicio de sesión de usuario

Ahora el jefe quiere saber usuarios importantes 7 días en una plataforma de aterrizaje fila.

requisitos de salida son los siguientes:

  • Nombre de usuario nombre_usuario (7 días seguidos el número de usuarios conectados)         

Ideas, primera ventaja con una función de ventana de desplazamiento se obtiene por cada vuelta de cambio de hora de inicio de sesión de usuario 7 filas cada vez aterrizaje, y luego calculando para cada usuario lapso de tiempo de inicio de sesión durante 7 días cada vez aterrizaje, si cada usuario 7, eje de la línea de tiempo de aterrizaje hacia atrás exactamente igual al tiempo de retraso de 7 días, lo que indica que el usuario ha aterrizado 7 días consecutivos.

la solución del problema de referencia :

select b.user_name

(select user_name,date,lead(date,7) over(partition by user_name order by date desc) as date_7from user_login_table) b where b.date is not nulland date_sub(cast(b.date as date,7)) = cast(b.date_7 as date)

 

resumen :

En este trabajo, el análisis de los datos de tres preguntas de la entrevista para entender la función de ventana escenarios de aplicación práctica, por supuesto, la suposición es que ya sabemos la sintaxis, el uso de la función de ventana función de ventana de hecho se puede medir como SQL dominio analista de datos de la capacidad, por supuesto, No importa qué tipo de uso tiene que aprender la práctica el pensamiento de fondo solicitud por qué necesita esta función de análisis.

Publicado 44 artículos originales · elogios ganado 16 · Vistas a 10000 +

Supongo que te gusta

Origin blog.csdn.net/YYIverson/article/details/105078581
Recomendado
Clasificación