Reproduzido Fonte: https://mp.weixin.qq.com/s/Qg1Bacw5ta9Jnbs6ImqAZw
fundo
SQL há uma classe de funções chamadas funções de agregação, tais como a contagem, soma, média, min, max , estas funções podem ser várias linhas de dados de acordo com a estruturada agregados em uma linha, linha de dados geral antes de o agregado é maior do que a linha de dados depois de agregação. E às vezes nós não queremos apenas os dados antes de agregação, após agregação de dados que eles querem, quando eles introduziram esta função de janela .
Seguindo algumas perguntas rosto DTM explicar como usar a função janela. Conhecimento se refere a funções da janela de triagem, agrupamento consulta o usuário para a função de janela para a função janela de análise de deslocamento, cada um vai perguntas rosto respondida por um tema de fundo.
texto
1, um top take-plataforma perguntas da entrevista analista de dados. User_goods_table tabela de dados transação existente da seguinte forma:
-
nome de usuário user_name
-
goods_kind usuário ordenou categoria takeaway
Agora, o chefe quer conhecer cada usuário comprar takeaway distribuição categoria de preferência, e remover cada usuário para comprar até categoria takeaway é que.
requisitos de saída são os seguintes:
-
nome de usuário user_name
-
goods_kind a maioria dos usuários para comprar categoria take-away
Ideias, determinado usando uma função de janela para cada usuário row_number cada categoria escalão número para posterior distribuição, e retire a primeira categoria classificada ou seja, o usuário adquire a categoria mais takeaway.
solução de problema de referência :
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, uma plataforma de pagamento principais perguntas da entrevista de análise de dados. User_sales_table tabela de dados transação existente da seguinte forma:
-
nome de usuário user_name
-
valor do pagamento utilizador pay_amount
Agora o chefe quer saber 20% do valor pago ao usuário anterior.
requisitos de saída são os seguintes:
-
nome de utilizador nome_usuario (o topo de 10% dos utilizadores)
Ideia, NTILE usando funções de janela correspondentes para cada utilizador e a quantia do pagamento em 5 grupos (cada grupo de modo que existe 1/5), para dar um primeiro pacote de utilizador classificou efectuado antes de o grupo de utilizadores ou seja, 20% do valor anterior. (Note que este é de 20% da demanda antes que o usuário, em vez do usuário obrigado a pagar o top 20)
solução de problema de referência :
select b.user_name from
(select
user_name,
ntile(5) over(order by sum(pay_amount) desc) as level
from user_sales_table group by user_name ) b
where b.level = 1
3, o topo de uma pequena plataforma de vídeo perguntas da entrevista de análise de dados. Já utilizador de login mesa user_login_table da seguinte forma:
-
nome de usuário user_name
-
data hora do login do usuário
Agora o chefe quer saber utilizadores importantes 7 dias em uma plataforma de linha de pouso.
requisitos de saída são os seguintes:
-
nome de utilizador nome_usuario (7 dias seguidos o número de utilizadores registados no)
Idéias, primeiro protagonista com uma função janela de deslocamento é obtido para cada login do usuário tempo de mudança para trás 7 linhas cada vez aterragem, e, em seguida, calcular para cada usuário lag tempo de login por 7 dias cada vez pouso, se cada usuário 7, linha de desvio de tempo de pouso para trás exatamente igual ao tempo de atraso de 7 dias, indicando que o usuário tenha desembarcado 7 dias consecutivos.
solução de problema de referência :
select b.user_name
(select user_name,
date,lead(date,7)
over(partition by user_name order by date desc) as date_7
from user_login_table) b
where b.date is not null
and date_sub(cast(b.date as date,7)) = cast(b.date_7 as date)
resumo :
Neste trabalho, a análise dos dados de três perguntas da entrevista para entender a função de janela cenários de aplicação prática, é claro, o pressuposto é que já sabemos a sintaxe, usando a função de janela função de janela, na verdade pode ser medido como um sql maestria analista de dados de capacidade, é claro, não importa o tipo de uso tem que aprender a fundo aplicação pensamento prático porque você precisa dessa função de análise.