sql >> Database >  >> RDS >> Mysql

Hoogste voorkomen van een waarde binnen elke groep

Ik heb een tijdelijke tabel geïntroduceerd om de zaken wat leesbaarder te maken. Je zou die zoekopdracht zeker inline kunnen vervangen en de tijdelijke tabel kunnen verwijderen indien gewenst.

De eerste select somt de bezoeken per gebruiker en website op.

De tweede selectie vindt het maximale aantal bezoeken voor elke gebruiker in de subquery en gaat vervolgens terug naar de tijdelijke tabel om de website te vinden waarvan het aantal overeenkomt met die maximale waarde.

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


  1. Splitfunctie in SQL Server 2008

  2. Impliceert een Postgres UNIQUE-beperking een index?

  3. Is het veilig om datums als een string in mysql op te slaan?

  4. Wijzig het scheidingsteken in een komma in SQLite-queryresultaten