Questão de SQL para Analistas de Dados da Amazon
Вставка
- Опубліковано 8 вер 2024
- Vamos falar de SQL hoje? A ferramenta mais importante para qualquer profissional de dados, do engenheiro ao cientista, costuma ser a mais cobrada em processos seletivos que envolvem algum tipo de teste. Vi uma questão de SQL aplicada na Amazon no procesos seletivo de analista de dados e achei que poderia ser de interesse de quem acompanha o canal!
E a gente tem SQL lá no Clube de Assinaturas, ein? A plataforma de ensino de dados mais barata do Brasil, até onde eu sei: www.universidadedosdados.com
Um pequeno equívoco que eu cometi: o horário deveria vir com data! A resolução permanece, mas diminui algumas alternativas (embora ainda existem N possibilidades distintas). Peço perdão pelo descuido!
O exercício também poderia ser resolvido com um COUNT(*)? Na teoria, o id que tivesse um valor par não estaria trabalhando, e quem tivesse um valor impar ainda estaria, pois não tem como informar uma saída sem uma entrada antes.
Funcionaria também, se todos iniciam tendo uma entrada, seria certamente a melhor solução!
Pensei da mesma forma, boa.
TOP!
Muito bom! Eu fiz usando row_number() e ordenando ao contrário e pegando somente a primeira linha onde o action fosse 'in'.
Ótima estratégia!
faz uma cte selecionando max(time) e emp_id, da cte vc seleciona o max time, emp_ip da um join na tabela e traz a action, por fim faz um case when se action in = presente se action out = ausente
Excelente, parabéns pela dica!
Yukio, uma das opções também seria um CTE com FILTER e WHERE. Fiz aqui no databricks rapidinho para a galera ter outras opções, abs!
WITH CTE_FILTER
AS
(SELECT
emp_id,
DATE_FORMAT(MAX(time) FILTER(WHERE action= "in"), "HH:mm:ss") as hora_max,
DATE_FORMAT(MAX(time) FILTER(WHERE action= "out"), "HH:mm:ss") as hora_min
FROM tabela_amazon
GROUP BY emp_id)
SELECT * FROM CTE_FILTER
WHERE hora_max > hora_min;
Muito top!