sql >> Base de Datos >  >> RDS >> Mysql

mysql cuyo valor tiene el conteo máximo

Mire esto... para evitar hacer referencia al mismo grupo de resultados, creé una tabla... debe eliminarla después de realizar el procesamiento, o reemplazar maxcounttemp con (SELECT what, loc, count(loc) howmany FROM maxcount GROUP BY what, loc) as tblX Traté de hacerlo TEMPORAL, pero no puedes usarlo dentro de una subconsulta si la tabla exterior es la misma.

CREATE TABLE `maxcounttemp` (
  `what` varchar(1) DEFAULT NULL,
  `loc` varchar(1) DEFAULT NULL,
  `howmany` int DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

INSERT INTO maxcounttemp (
  SELECT what, loc, count(loc) howmany FROM maxcount GROUP BY what, loc
);

SELECT mct.what, mct.loc, mct.howmany
FROM maxcounttemp mct 
WHERE (mct.what, mct.howmany) IN (
  SELECT mct2.what, MAX(mct2.howmany) 
  FROM maxcounttemp mct2 
  WHERE mct2.what = mct.what 
  GROUP BY mct2.what
) GROUP BY (mct.what);

espero que ayude... tenga en cuenta que bx o by son igualmente posibles en esta consulta...