Ir ao conteúdo
  • Cadastre-se

MySQL Funções com datas e strings


Posts recomendados

Pessoal, boa noite.

Para praticar, estou utilizando o SGBD MySQL e o aplicativo MySQL Workbench com o banco de dados SAKILA, disponível em https://dev.mysql.com/doc/sakila/en/sakila-installation.html. E estou com a seguinte dúvida:

------------------------------------------------

2. A gerência da rede deseja entender se no mês de maio de 2005 houve diferença na recorrência dos consumidores fidelizados (ou seja, que realizaram mais de um aluguel) entre as duas lojas. Seu desafio é escrever uma consulta que retorne o número médio de dias entre os aluguéis desses consumidores, por loja que estão registrados. Dicas de como construir essa consulta:

- Descubra, primeiro, quem são os consumidores (pelo seu customer_id) que queremos analisar: realizaram dois ou mais aluguéis no mês de maio de 2005. Os consumidores analisados podem ser identificados usando o seguinte comando:

 

SELECT customer_id AS id_consumidor, COUNT(rental_id) AS qtd_alugueis, DATE_FORMAT(rental_date, "%Y-%m") AS ano_mes
 FROM sakila.rental
       WHERE YEAR(rental_date) = 2005 AND MONTH(rental_date) = 5
       GROUP BY customer_id, DATE_FORMAT(rental_date, "%Y-%m")
       HAVING qtd_alugueis >= 2
       ORDER BY customer_id;

-------------------------------------------------------------

- Depois, avalie a diferença de tempo entre cada aluguel e o seguinte, por consumidor. Você precisará de uma função de janela para isso. Podemos avaliar com o seguinte comando:

 

WITH fid AS
(
SELECT customer_id AS id_consumidor, COUNT(rental_id) AS qtd_alugueis
 FROM sakila.rental
       WHERE YEAR(rental_date) = 2005 AND MONTH(rental_date) = 5
       GROUP BY customer_id
       HAVING qtd_alugueis >= 2
       ORDER BY customer_id
)

SELECT id_consumidor, rental_id, rental_date, 
       LEAD(rental_date) OVER (PARTITION BY id_consumidor ORDER BY id_consumidor)
	FROM fid
       LEFT JOIN rental
       ON fid.id_consumidor = rental.customer_id
       WHERE YEAR(rental_date) = 2005 AND MONTH(rental_date) = 5;

 

 

Neste último item, ele pede a diferença de tempo entre cada aluguel e o seguinte, porém eu não consegui achar em lugar nenhum alguma função de janela que trabalhe com função de datas. Alguém tem alguma dica em relação a essa questão?

 

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!