Mysql
 sql >> Base de données >  >> RDS >> Mysql

Apparition la plus élevée d'une valeur dans chaque groupe

J'ai introduit un tableau temporaire juste pour rendre les choses un peu plus faciles à lire. Vous pouvez certainement remplacer cette requête en ligne et éliminer la table temporaire si vous le souhaitez.

La première sélection additionne les visites par utilisateur et par site Web.

La deuxième sélection trouve le nombre maximum de visites pour chaque utilisateur dans la sous-requête, puis rejoint la table temporaire pour trouver le site Web dont le nombre correspond à cette valeur maximale.

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