wellfelix 0 Denunciar post Postado Agosto 23, 2016 Olá pessoal, estou criando uma query que retorna o tempo que o cliente fica aguardando atendimento depois que ele é transferido para outro atendente, na minha query mais interna, eu busco algumas informações sobre os atendentes que aceitaram a transferência de atendimento, só que, o retorno do select vem com registros duplicados, vou colocar abaixo a query mais interna que criei. SELECT DISTINCT lh_msg.chat_id, lh_msg.id, FROM_UNIXTIME(lh_msg.time, '%H:%i:%s') AS time, lh_msg.user_id FROM lh_msg WHERE lh_msg.msg LIKE '%aceitou um chat%' ORDER BY lh_msg.chat_id DESC, lh_msg.id Mesmo utilizando o distinct, a query me retorna chat_id duplicados, preciso que retorne apenas 1 chat_id de cada atendimento, sem duplicações de chat_id. Abaixo, coloquei o retorno das colunas, chat_id e id chat_id id 31013 1146685 31011 1146625 31010 1146672 31008 1146620 31005 1146674 31004 1146589 31003 1146548 31002 1146471 31000 1146402 30999 1146334 30998 1146377 30995 1146309 30993 1145932 30993 1145934 30992 1145884 30992 1145988 30992 1146033 30991 1145962 No exemplo acima, preciso que retorne apenas o primeiro registro de cada chat_id, sem duplicações. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Agosto 23, 2016 Veja se ajuda http://forum.imasters.com.br/topic/512214-selecionando-item-max/ Compartilhar este post Link para o post Compartilhar em outros sites
wellfelix 0 Denunciar post Postado Agosto 23, 2016 Obrigado Motta, mas consegui descobrir, retirei o distinct e dei um group by no campo chat_id e user_id, agora ele traz somente o primeiro registro sem duplicações :D. Obrigado!! Compartilhar este post Link para o post Compartilhar em outros sites
wellfelix 0 Denunciar post Postado Agosto 23, 2016 Olha como ficou linda a query: SELECT FROM_UNIXTIME(lh_chat.time, '%d-%m-%Y') AS "Data do Atendimento", TIMEDIFF(lh_wait_time.time_accept, lh_wait_time.time_transf) AS "Tempo de Pos Triagem", lh_wait_time.chat_id AS "ID do Chat do ATD que Transferiu", lh_wait_time.id AS "ID da Mensagem do ATD que Transferiu", lh_wait_time.time_transf AS "Horario da Transferencia", lh_wait_time.chat_id_accept AS "ID do Chat do ATD que Aceitou", lh_wait_time.id_accept AS "ID da Mensagem do ATD que Aceitou", lh_wait_time.time_accept AS "Horario do Atendimento", lh_wait_time.name_support AS "Nome do ATD que Transferiu", lh_wait_time.msg_accept AS "Nome do ATD que Aceitou" FROM lh_chat INNER JOIN (SELECT lh_transf.id, lh_transf.msg, FROM_UNIXTIME(lh_transf.time, '%H:%i:%s') AS time_transf, lh_transf.chat_id, lh_transf.user_id, lh_transf.name_support, lh_accept.id AS id_accept, lh_accept.msg AS msg_accept, FROM_UNIXTIME(lh_accept.time, '%H:%i:%s') AS time_accept, lh_accept.chat_id AS chat_id_accept, lh_accept.user_id AS user_id_accept FROM lh_msg AS lh_transf INNER JOIN (SELECT lh_msg.id, lh_msg.msg, lh_msg.time, lh_msg.chat_id, lh_msg.user_id, lh_msg.name_support FROM lh_msg WHERE lh_msg.msg LIKE '%aceitou um chat%' GROUP BY lh_msg.chat_id, lh_msg.user_id ORDER BY lh_msg.chat_id DESC, lh_msg.id) AS lh_accept ON lh_accept.chat_id = lh_transf.chat_id WHERE lh_transf.msg LIKE '%direcionado (a)%' GROUP BY lh_transf.chat_id, lh_transf.user_id ORDER BY lh_transf.chat_id DESC, lh_transf.id) AS lh_wait_time ON lh_wait_time.chat_id = lh_chat.id WHERE FROM_UNIXTIME(lh_chat.time, '%Y-%m-%d') BETWEEN '2016-08-01' AND '2016-08-22' ORDER BY lh_wait_time.chat_id DESC Não sei se poderia melhorar ela, tem apenas uns 4 meses que estou trabalhando na área de desenvolvimento e não possuo muito conhecimento. Compartilhar este post Link para o post Compartilhar em outros sites