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

Mayor aparición de un valor dentro de cada grupo

He introducido una tabla temporal solo para hacer las cosas un poco más fáciles de leer. Sin duda, podría sustituir esa consulta en línea y eliminar la tabla temporal si lo desea.

La primera selección suma las visitas por usuario y sitio web.

La segunda selección encuentra el máximo de visitas para cada usuario en la subconsulta y luego se une a la tabla temporal para encontrar el sitio web cuyo conteo coincide con ese valor máximo.

create temporary table TempSum
    select user-ID, website-ID, count(*) as TotalCount
        from YourTable
        group by user-ID, website-ID

select ts.user-ID, ts.website-ID, ts.TotalCount
    from (select user-ID, max(TotalCount) as MaxCount
              from TempSum
              group by user-ID) ms
        inner join TempSum ts
            on ts.user-ID = ms.user-ID
                and ts.TotalCount = ms.MaxCount