Mysql
 sql >> Database >  >> RDS >> Mysql

Aspetto massimo di un valore all'interno di ciascun gruppo

Ho introdotto una tabella temporanea solo per rendere le cose un po' più facili da leggere. Potresti certamente sostituire quella query in linea ed eliminare la tabella temporanea se lo desideri.

La prima selezione somma le visite per utente e sito web.

La seconda selezione trova le visite massime per ogni utente nella sottoquery e poi torna alla tabella temporanea per trovare il sito web il cui conteggio corrisponde a quel valore massimo.

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