Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Höchstes Auftreten eines Wertes innerhalb jeder Gruppe

Ich habe eine temporäre Tabelle eingeführt, um die Dinge etwas leichter lesbar zu machen. Sie könnten diese Abfrage sicherlich inline ersetzen und die temporäre Tabelle entfernen, wenn Sie dies wünschen.

Die erste Auswahl summiert die Besuche pro Benutzer und Website.

Die zweite Auswahl findet die maximalen Besuche für jeden Benutzer in der Unterabfrage und verbindet sich dann wieder mit der temporären Tabelle, um die Website zu finden, deren Anzahl diesem Maximalwert entspricht.

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