• 0
erosidin

filtro data, sum, group by e juntar colunas

Question

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:[email protected][email protected][email protected][email protected],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.

Edited by erosidin

Share this post


Link to post
Share on other sites

6 answers to this question

Recommended Posts

  • 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

 

Share this post


Link to post
Share on other sites
  • 0

Leandro Persan

Já tentei um select bem parecido que também não funcionou, e da maneira que me sugeriu me retornou o erro.

 

image.png.a424b2e3ca18898e44c428dabbd0eab7.png

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.