Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

gallice

Script de Consulta

Recommended Posts

Tenho uma Tabela com os seguintes campos,

 

`id` INT(11) NOT NULL AUTO_INCREMENT ,
`usuario_id` INT(11) NOT NULL ,
`funcionario_id` INT(11) NULL DEFAULT NULL ,
`data_atendimento` DATETIME NULL DEFAULT NULL ,
`data_emissao` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ,
`numero` INT(11) NULL DEFAULT NULL ,
`fila_id` INT(11) NOT NULL ,
preciso fazer uma consulta que retorne a media de atendimentos por usuário como por exemplo
funcionario_id média de atendimento por dia
1 10
2 15,5
3 20
e outra consulta que preciso fazer é tempo médio de atendimento por exemplo
fila tempo médio em segundos dia
1 68 2013-06-13
2 70 2013-06-13
3 28 2013-06-13
1 30 2013-06-14
2 36 2013-06-15
att

Compartilhar este post


Link para o post
Compartilhar em outros sites

ENTÃO NA segunda consulta estava tentando colocar o avg na frente de um sum dai ficava "avg(sum(time" não dava certo burro pra c....

dai percebi que tinha que tirar o sum dai ficou a consulta abaixo e deu certo

 

 

select AVG(TIME_TO_SEC(TIMEDIFF(data_atendimento,data_emissao))) as "segundos", cast(`senha`.`data_emissao` as date) AS

`data`
from `senha` WHERE data_atendimento IS NOT NULL group by (select cast(`senha`.`data_emissao` as date));

 

ele retornou o tempo medio de cada dia independente da fila

 

tempo médio em segundos dia
68 2013-06-13
30 2013-06-14

 

gostaria de saber se tem como agrupar tbem esta informação tipo um group by data and id_fila

 

para sair

 

assim

 

fila tempo data

1 30 15

2 45 15

 

1 35 16

 

na primeira

 

select count(*) as quantidade, cast(senha.data_emissao as date)
as data_atendimento from senha where funcionario_id = 1
group by (cast(`senha`.`data_emissao` as date));

 

ele retorna

 

quantidade data

3 15

4 16

 

mas gostaria que a consulta retornasse

id_funcionario quantidade data

1 15 15

2 21 15

3 15 15

1 25 16

 

como pode ver so consegui fazer passando o parametro do id_funcionario, mas a intenção era fazer um group by multiplo utilizando o id_funcionario e a cast da data, mais ou menos como a anterior.

 

att

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pela ajuda motta, mas o calculo de datas esta correto ate onde eu consegui, o que me falta é o exemplificado acima

 

exemplo com o codigo

 

select AVG(TIME_TO_SEC(TIMEDIFF(data_atendimento,data_emissao))) as "segundos", cast(`senha`.`data_emissao` as date) AS

`data`
from `senha` WHERE data_atendimento IS NOT NULL group by (select cast(`senha`.`data_emissao` as date));

 

consegui

 

tempo médio em segundos dia
68 2013-06-13
30 2013-06-14
o que eu quero é

fila tempo data

1 30 2013-06-15

2 45 2013-06-15

1 35 2013-06-16

 

e na outra com o codigo

 

select count(*) as quantidade, cast(senha.data_emissao as date)
as data_atendimento from senha where funcionario_id = 1
group by (cast(`senha`.`data_emissao` as date));

 

retorna isto

 

quantidade data

3 2013-06-15

4 2013-06-16

 

eu queria

 

id_funcionario quantidade data

1 15 2013-06-15

2 21 2013-06-15

3 15 2013-06-15

1 25 2013-06-16

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não seria só colocar o fila_id no agrupamento ?!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.