Contar periodos da manhã e da tarde em um range de datas - sql
02/05/2019
0
Nesse período, portanto, tenho registros no banco MSSQL referente a atendimentos, diversos.
Caso eu tenha qualquer atendimento na manhã, preciso contabilizar em minha consulta 1 (um) período.
Caso eu tenha qualquer atendimento na parte da tarde, preciso contabilizar em minha consulta 1(um) período.
Dessa forma, em caso de eu ter pelo menos um atendimento pela manhã e um atendimento a tarde, preciso contabilizar em minha consulta SQL 2 (dois) períodos.
Se eu tiver dez atendimentos na manhã e dez a tarde, eu contabilizo 2 (dois) períodos da mesma forma.
Como posso criar essa consulta SQL?
Estou com dificuldade em agrupar e contar os períodos, validando se há registros ou não naquele período.
Ricardo
Posts
03/05/2019
João Santos
existe creio eu duas formas dese fazer essa contagem
SELECT COUNT(IF(hora => 8 AND hora <= 11:59 )) AS MANHA,COUNT(IF(hora => 12 AND hora <= 17:59 )) AS TARDE, FROM tabela;
Também pode ser usar o case
SELECT COUNT(case when hora => 8 AND hora <= 11:59 then i++ ) AS MANHA, COUNT(case when hora => 12 AND hora <= 17:59 then i++ ) AS TARDE, FROM tabela;
Espero ter ajudado
03/05/2019
Emerson Nascimento
- ser for avaliação diária:
SELECT CAST(T.data AS DATE) DIA, MAX(CASE WHEN CAST(T.data AS TIME) < '12:00' THEN 'SIM' ELSE 'NAO' END) MANHA, MAX(CASE WHEN CAST(T.data AS TIME) >= '12:00' THEN 'SIM' ELSE 'NAO' END) TARDE, MAX(CASE WHEN CAST(T.data AS TIME) < '12:00' THEN 1 ELSE 0 END)+ MAX(CASE WHEN CAST(T.data AS TIME) >= '12:00' THEN 1 ELSE 0 END) PERIODOS FROM Tabela T GROUP BY CAST(T.data AS DATE)
- se for avaliacao geral:
SELECT MAX(CASE WHEN CAST(T.data AS TIME) < '12:00' THEN 'SIM' ELSE 'NAO' END) MANHA, MAX(CASE WHEN CAST(T.data AS TIME) >= '12:00' THEN 'SIM' ELSE 'NAO' END) TARDE, MAX(CASE WHEN CAST(T.data AS TIME) < '12:00' THEN 1 ELSE 0 END)+ MAX(CASE WHEN CAST(T.data AS TIME) >= '12:00' THEN 1 ELSE 0 END) PERIODOS FROM Tabela T
Clique aqui para fazer login e interagir na Comunidade :)