![]() |
como puedo seleccionar la fila que mas se repita? Hola que tal, miren tengo la siguiente Tabla |IDtransaction| |IDfile| |IDcampania| |Addr| |send| en campo IDtransaction es autonumerico el campo IDfile hace referencia a un id unico de un producto IDcampania hace referencia a que familia pertenece ese producto addr es una direccion ip send es la fecha donde se realizo la transaccion Cuando se realiza una transaccion se inserta una nueva fila en la tabla, donde IDtransaction, Addr, Send almacenan valores unicos y que no se repiten, pero en cambio IDfile, IDcampania almacenan valores que si se pueden repetir entonces supongamos que tengo los siguientes datos |IDtransaction| |IDfile| |IDcampania| |Addr| |send| ...1.... ... 5... ...7... ...a... ...17-may... ...2... ...5... ...7... ...b... ...18-may... ...3... ...8... ...7... ...c ... ...19-may... ...4... ...5... ...7... ...f... ...20-may... ...5.. ...2... ...8... ...g... ...21-may... el problema que quiero es que para motivos estadisticos quiero sacar por ejemplo que producto fue el mas vendido de una campaña por ejemplo quiero saber que producto fue el mas vendido de la campaña 7, hago un select de la siguiente forma select * from tabla where IDcampania=7 y me arroja todos los registros pertenecientes a esa campaña, pero no se como discriminar para que me arroje el IDfile del producto mas vendido (en este caso el producto con idfile =5 que como pueden ver es el que mas se repite) y tambien como discriminar para que me arroje el id del producto menos vendido |
Re: como puedo seleccionar la fila que mas se repita? que te sirva.... Código: SELECT top 1 idfile, Count(*) AS ventas |
Re: como puedo seleccionar la fila que mas se repita? La consulta de Quim es la correcta, pero conviene avisarte de que si, por ejemplo, dos productos han sido vendidos en la misma cantidad durante esa campaña y esa cantidad es la máxima, la consulta te mostrará sólo uno de ellos. Otra cosa, para MySQL sustituye el top 1 por LIMIT 1 al final de la consulta: SELECT idfile, Count(*) AS ventas FROM tabla WHERE IDcampania=7 GROUP BY idfile ORDER BY Count(*) DESC LIMIT 1; Nos olvidábamos: si quieres sacar el mínimo, lo mismo pero quitando el DESC sin más o poniendo en su lugar ASC. Pero te encontrarás con el mismo problema. Quim, una consulta para alguien con tu experiencia: sé que esta consulta que lanzo ahora es un verdadero problema, me refiero a poder sacar mediante una única consulta la lista por IDcampania con su máximo por producto. La verdad que es un reto, pues he visto en internet varias preguntas sobre la imposibilidad del Max(count())... Yo, la verdad, he desistido. Saludos |
Re: como puedo seleccionar la fila que mas se repita? Provocador Jurena :-) le voy a dar una par de vueltas.... pero ... mi experiencia no debe llegar tan lejos. Con consultas anidadas debe salir pero con una sola consulta y sql standard.... no se. Una consulta que cuente y ordene desc y una que sobre la primera que saque el first de cada grupo...o algo asi pero eso ya no seria una sola consulta.... Quim |
Re: como puedo seleccionar la fila que mas se repita? jurena, No es muy elegante pero funciona!!! Código: Creo recordar que en ORACLE se puede usar un campo de una subquerry como parametro de otra subquerry con lo que lo podriamos hacer mas elegante, pero en MySql no he encontrado la forma. Con un solo SELECT creo que no se puede... Quim |
Re: como puedo seleccionar la fila que mas se repita? brillante, Quim :aplauso: seguiré "provocando": es mi modo de aprender Gracias |
| La zona horaria es GMT -6. Ahora son las 10:36. |
Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.