Ir para conteúdo
Fórum Script Brasil
  • 0

filtro data, sum, group by e juntar colunas


erosidin

Pergunta

Boa tarde amigos,

Tenho uma planilha de Excel que importo para o MySQL entretanto o layout da mesma não seguiu uma padrão de fácil utilização, ex:

existem 4 colunas benefícios para um mesmo registro assim como função e finalidade do registro, 

o que eu preciso é que a consulta me retorne:

data, benefícios(soma por tipo), função(soma por tipo), finalidade(soma por tipo)

o campo data serviria apenas para o filtro o resultado seria mais ou menos esse

beneficio | total

foto          |50

currículo |100

e assim com função e finalidade

 

SELECT ats_data, ats_filial, sum(`ats_beneficios1`) + sum(`ats_beneficios2`) + sum(`ats_beneficios3`) + sum(`ats_beneficios4`) as total 
FROM `atendimentos_simples` wHERE `ats_beneficios1` like '%foto%' or `ats_beneficios2` like '%foto%' or `ats_beneficios3` like '%foto%' 
or `ats_beneficios4` like '%foto%'and ats_data BETWEEN '2019-07-01' AND '2019-07-31' group by  ats_filial

essa consulta não esta funcionando o filtro da data sempre me trazendo o total, já tentei usar subselect mas falhei.

se puderem me ajudar por favor, trabalho com uma entidade publica e mudar a planilha esta fora de questão(infelizmente)

O mais proximo que cheguei foi 

select ats_filial, ats_data,
@a:=(select COUNT(ats_beneficios1) from atendimentos_simples where ats_data = '2019-01-04' and ats_beneficios1 like '%foto%') as b1, 
@b:=(select COUNT(ats_beneficios2) from atendimentos_simples where ats_data = '2019-01-04' and ats_beneficios2 like '%foto%') as b2,
@c:=(select COUNT(ats_beneficios3) from atendimentos_simples where ats_data = '2019-01-04' and ats_beneficios3 like '%foto%') as b3,
@d:=(select COUNT(ats_beneficios4) from atendimentos_simples where ats_data = '2019-01-04' and ats_beneficios4 like '%foto%') as b4,
convert(substring(@e:=@a+@b+@c+@d,1,2), integer) as total
from atendimentos_simples
group by ats_filial

Erros:

Resultado se repete em cada linha das 10 filiais 

Se retiro o group by o resultado continua se repetindo mas todas as linhas são exibidas como um totalizador para cada registro.

ats_filial ats b1 b2 b3 b4 total
F1 2019-01-03 2 0 1 0 NULL
F2 2019-01-03 2 0 1 0 NULL
F3 2019-01-01 2 0 1 0 NULL
F4 2019-01-03 2 0 1 0 NULL
F5 2019-01-03 2 0 1 0 NULL
F6 2019-01-03 2 0 1 0 NULL
F7 2019-01-03 2 0 1 0 NULL
F8 2019-01-03 2 0 1 0 NULL
F9 2019-01-03 2 0 1 0 NULL
F10 2019-01-20 2 0 1 0 NULL

Obrigado.

Editado por erosidin
Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Já tentou assim?

SELECT ats_filial, ats_data,
COUNT(ats_beneficios1) as b1,
COUNT(ats_beneficios2) as b2,
COUNT(ats_beneficios3) as b3,
COUNT(ats_beneficios4) as b4,
SUM(b1+b2+b3+b4) as total
FROM atendimentos_simples
WHERE ats_data = '2019-01-04' and ats_beneficios1 like '%foto%'
GROUP BY ats_filial

 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...