Você está na página 1de 4

DESIGNAÇÃO

Estudo de caso -1: Análise de operações

• Pontos a serem considerados:


o O que significa o evento? O que considerar para revisão?
o Candidato deve passar algum tempo entendendo a tabela

QA: Calcular o número de trabalhos analisados por hora por dia para novembro
de 2020? QB: Digamos que a métrica acima seja chamada de taxa de
transferência. Calcular a média móvel de 7 dias da taxa de transferência? Para a
taxa de transferência, você prefere a métrica diária ou a rolagem de 7 dias e por
quê?
QC: Calcular a percentagem de quota de cada língua nos últimos 30 dias?
QD: Digamos que você veja algumas linhas duplicadas nos dados. Como você
exibirá duplicatas da tabela?

QA.
SELECIONE ds,
ROUND(1.0*COUNT(job_id)*3600/SUM(time_spent),2) COMO THROUGHPUT DE
job_data WHERE EVENT IN ('transferência','decisão')
E ds ENTRE '2020-11-01- E -2020-11-30' GRUPO POR ds

.!QB.
COM CTE AS ( SELECT ds, COUNT(job_id) AS num_jobs, SUM(time_spent) AS
total_time DE job_data WHERE EVENT IN('transfer;,'decision')
E ds ENTRE '2020-11-01' E '2020-11-30' GRUPO POR ds ) SELECIONE ds,
ARREDONDADA(1.0*

SOMAR(num_jobs) SOBRE (ORDENAR POR ds LINHAS ENTRE 6 LINHA ANTERIOR E


ATUAL) / SOMA(total_time) SOBRE (ORDENAR POR ds LINHAS ENTRE 6 LINHA
ANTERIOR E ATUAL),2) COMO throughput_7d DA CTE

QC.
COM CTE AS ( SELECIONE Idioma, CONTE (job_id) COMO num_jobs DE
job_data ONDE evento em('transferência','decisão') e ds ENTRE '2020-
11-01' E '2020-11-30' GRUPO POR IDIOMA), total AS ( SELECT
COUNT(job_id) AS total_jobs DE job_data WHERE evento
IN('transferência','decisão') e ds ENTRE '2020-11-01' E '2020-11-30'
GRUPO POR idioma ) SELECIONE o idioma,
ROUND(100.0*num_jobs/total_jobs,2) COMO perc_jobs DA CTE CROSS OIN
ordem total POR perc_job DESC

QD.
COM CTE COMO ( SELECIONE *,
ROW_NUMBER() OVER (PARTIÇÃO POR ds, job_id, actor_id) COMO ROWNUM DE
job_data

EXCLUIR
DE
CTE
ONDE rownum > 1

Estudo de caso – 2: Investigando o Spike métrico


QA: Calcular o engajamento semanal do usuário?
QB: Calcular o crescimento de usuários por produto?
QC: Calcular a retenção semanal da coorte de inscrição de usuários?
QD: Calcular o engajamento semanal por dispositivo?
QE: Calcular as métricas de engajamento de e-mail?

QA.
SELECIONE DATE_TRUNC('semana', e.occurred_at),
CONTAGEM (e.user_id DISTINTA) COMO weekly_active_users DOS eventos e
ONDE e.event_type = 'engajamento'
E e.event_name = 'login'
GRUPO POR 1
ENCOMENDAR POR 1

.!QB.
SELECIONE DATE_TRUNC('dia', created_at) COMO dia,
CONTAR(*) COMO all_users,
COUNT(CASE QUANDO activated_at NÃO É NULL ENTÃO u.user_id ELSE
FIM NULO) COMO activated_users
DE usuários u
ONDE created_at >= ‘2021-04-01’
E created_at < ‘2021-04-30’
GRUPO POR 1
ENCOMENDAR POR 1

QC.
SELECIONE DATE_TRUNC('semana', z.occurred_at) COMO "semana",
AVG(z.age_at_event) COMO "Idade média durig semana",
CONTAGEM (CASO DISTINTO QUANDO z.user_age > 70 ENTÃO z.user_id OUTRO
FINAL NULO) COMO "10+ semanas",
CONTAGEM (CASO DISTINTO QUANDO z.user_age < 70 E
z.user_age >=63
ENTÃO z.user_id OUTRO FIM NULO) COMO '9 semanas",
CONTAGEM (CASO DISTINTO QUANDO z.user_age < 63 E
z.user_age >=56
ENTÃO MAIS ZERO FIM) COMO semanas", >=49
z.user_age z.user_age
z.user_id CASO QUAN FIM) COMO < 56 E
CONTAGEM MAIS DO '7 semanas",
CONTAGEM QUAN z.user_age
CASO < 49 E z.user_age >=42
(DISTINTA DO FIM) COMO
MAIS semanas",
ENTÃO ZERO '6
z.user_id
CONTAGEM QUAN z.user_age
CASO < 42 E z.user_age >=35
(DISTINTA DO FIM) COMO
MAIS semanas",
ENTÃO ZERO '5
CONTAGEM QUAN z.user_age
CASO < 35 E z.user_age >=28
(DISTINTA DO FIM) COMO
MAIS semanas",
ENTÃO ZERO '4
z.user_id
CONTAGEM QUAN z.user_age
CASO < 28 E >=21
(DISTINTA DO FIM) COMO z.user_age
MAIS semanas",
ENTÃO ZERO '3
z.user_id
CONTAGEM QUAN z.user_age
CASO < 21 E z.user_age >=14
(DISTINTA DO FIM) COMO
MAIS semanas",
ENTÃO ZERO '2
z.user_id
CONTAGEM QUAN z.user_age
CASO < 14 E z.user_age >=7
(DISTINTA DO FIM) COMO
MAIS semanas",
ENTÃO ZERO '1
CONTAGEM(DISTI QUAN .user_age
CASO z.user_age < 7 E z =63
NTA DO >
ENTÃO MAIS ZERO END) AS «Menos de um semana",
z.user_id
DE(
SELECIONE e.occurred_at, u.user_id,
DATE_TRUNC("semana",u.activated_at) COMO activation_week,
EXTRACT('day' DE e.occurred_at – u.activated_at) COMO age_at_event,
EXTRACT('day' FROM '201-09-01'::TIMESTAMP – u.activated_at) COMO
user_age
DE tutorial.yammer_users u
JUNTE-SE tutorial.yammer_events e
EM e.user_id = u.user_id
E e.event_type = 'Engajamento'
E e.evnetn_name= 'Login'
E e.occurred_at >= ‘2014-05-01’
E e.occurred_at < ‘2014-09-01’
ONDE u.activated_at NÃO É NULO ) z
GRUPO POR1
ENCOMENDAR POR 1
LIMITE 100

QD.
SELECIONE DATE_TRUNC('semana', occurred_at) COMO semana, CONTAR(ID de
usuário eletrônico distinto) COMO usuários ativos semanais,
CONTAR(CASO DISTINTO QUANDO e.device IN('macbook pro','lenovo
thinkpad','macbook air',''dell caderno inspiron','asus
Chromebook','Dell Inspiron Desktop','Acer Aspire Notebook','HP
Pavilion Desktop','Acer Aspire área de trabalho','mac mini')
THEN e.user id ELSE NULL END) COMO computador,
CONTAGEM (CASO DISTINTO QUANDO e.device IN('iphone
5','Samsung galáxia
S4','Nexus 5', 'iPhone 5S', 'iPhone 4s', 'nokia Lumia
635','HTC
Um','Samsung Galaxy Note','Amazon Fire telefone') ENTÃO e.user id
ELSE
FIM NULO) COMO telefone,
CONTAGEM (CASO DISTINTO QUANDO e.device IN('ipad air','nexus
7','ipad
mini','nexus 10','kindle fire','janelas superfície','samsung galáxia
DESIGNAÇÃO...............................................................................................................................1
QA...............................................................................................................................................1
.!QB.............................................................................................................................................1
QC...............................................................................................................................................1
QD...............................................................................................................................................1
QD...............................................................................................................................................3

LIMITE 100

QE.
SELECIONE DATE_TRUNC('semana', occurred_at) COMO SEMANA, CONTAR(CASO
QUANDO e.ação = « enviado
resumo semanal' ENTÃO e.ID do usuário
ELSE NULL END) COMO e-mails semanais, COUNT(CASE QUANDO e.ação
= « enviado e-mail de reengajamento' ENTÃO
e.user id ELSE NULL END) COMO e-mails de reengajamento, COUNT(CASE
QUANDO e.ação = « e-mail open'
THEN e.user id MAIS
NULL END) COMO e-mail abre, COUNT(CASE QUANDO e.ação = « e-
mail clickthrough' THEN e.user id
MAIS FIM NULO) COMO cliques em e-mail
DE eventos de e-mail e
GRUPO POR 1

Você também pode gostar