AnswerBun.com

SQL dúvida em consulta

Alguém pode me dar uma orientação nessa consulta? Como encontrar a quantidade de possíveis shows assistidos?

Para os espectadores do dia “24/07/2020” que passaram na catraca antes do horário de início do show, liste o número do ingresso, a hora de entrada, o nome do espectador e quantidade de possíveis shows assistidos (considerando apenas o horário de entrada).

SELECT i.numero, i.horaentrada, p.nome
FROM pessoa P
INNER JOIN espectador E ON e.cpfpessoa = p.cpf
INNER JOIN ingresso I ON e.cpfpessoa = i.cpfespectador
INNER JOIN show S ON s.datalineup = i.datalineupentrada
WHERE i.pertencedatalineup = '24/07/2020' and i.horaentrada < s.horainicio;

Tabelas

Pessoa {cpf, nome}

Espectador {cpfpessoa, codigo}

Ingresso {numero, valor, datalineupentrada, horaentrada, cpfespectador, pertencedatalineup}

Lineup {datalineup}

Show {nomelocal, horainicio, datalineup}

Banda {nome, ordemapresentacao, nomelocalshow, datalineupshow, horainicioshow}

Saída

NUMERO HORAENTRAD NOME


   3   21:00      Corina Brandan                                    
   3   21:00      Corina Brandan                                    
   8   22:00      Cristovao Aranha 

Preciso que mostre a quantidade de shows assistidos com base no horário de entrada.

Stack Overflow em Português Asked on December 30, 2020

1 Answers

One Answer

Eis uma possível solução:

-- código #1
-- © José Diz (Porto SQL)

with Comparecimento as (
SELECT numero, datalineupentrada, horaentrada, cpfespectador
  from Ingresso
  where datalineupentrada = convert (date, '24/7/2020', 103)
)
SELECT C.numero, C.horaentrada, P.nome, count(*) as [Shows assistidos]
  from Comparecimento as C
       inner join Pessoa as P on P.cpf = C.cpfespectador
       inner join Show as S on s.datalineup = C.datalineupentrada
  where S.horainicio >= C.horaentrada
  group by C.numero, C.horaentrada, P.nome;

A CTE Comparecimento seleciona os ingressos que foram apresentados na data desejada. A partir dessa relação são obtidos o nome da pessoa e os shows que iniciariam após a entrada da pessoa.

Há fatores que podem confundir no momento de manipular datas no SQL Server, acarretando em erros na execução quase sempre relacionados ao desconhecimento de como o SQL Server interpreta os literais (strings) contendo data. Assim, sempre que fornecer datas como literal fique atento para utilizar de forma que não gere interpretações erradas, dependendo de como esteja configurado o LANGUAGE e/ou o DATEFORMAT da sessão. Exemplos de erros que podem ocorrer, e respectivas soluções, estão no artigo “Dominando datas e horas no SQL Server”.

Answered by José Diz on December 30, 2020

Add your own answers!

Related Questions

Ajuda em um procedure com menor media de notas

0  Asked on December 25, 2020 by noob

   

Método no p:commandButton não é chamado

0  Asked on December 25, 2020 by juliana-marques

       

Dicionário com loop FOR em Python

1  Asked on December 25, 2020 by fernando-barros

 

Jogo de dois dados em Python

1  Asked on December 24, 2020 by marco-raad

 

Variável global usada em várias funções

1  Asked on December 23, 2020 by fora-chape

       

Como mudar status com AJAX?

2  Asked on December 23, 2020 by thalles-honorato

     

Como otimizar esse código?

2  Asked on December 23, 2020 by yoyo

   

Como criar um filtro de pesquisa para tabela html?

1  Asked on December 23, 2020 by guilherme-henrique

   

Erro ao logar no app com os dados moveis

0  Asked on December 23, 2020 by joaopauloft

         

Como eu posso melhorar este loop que tem um foreach dentro de outro?

1  Asked on December 22, 2020 by marcos-vinicius

     

Atualização Nodejs

1  Asked on December 21, 2020 by fbio-leonam

   

Atalho para Console.log() em vs code

2  Asked on December 20, 2020 by fernando-ernesto

   

Como alinhar imagem ao lado de imagem

3  Asked on December 19, 2020 by luan-pedro

   

É recomendável utilizar o tipo JSON nas colunas na tabela abaixo

1  Asked on December 18, 2020 by ismael-silva-limq

     

Valor nulo na soma

2  Asked on December 18, 2020 by thales

         

Ask a Question

Get help from others!

© 2022 AnswerBun.com. All rights reserved.