sql >> Databasteknik >  >> RDS >> Mysql

Räkna förekomsten av fält samtidigt som du är grupperad med 2

Din fråga relaterar inte till dina exempeldata; men du verkar vilja ha aggregering och rangordning. I MySQL 8.0 skulle du göra:

select
    row_number() over(order by count(*) desc) rn,
    order_id,
    count(*) items_in_order
from data
group by order_id
order by rn

Jag döpte den första kolumnen till rn (för rang ):Jag hittar id förvirrande här, eftersom du redan har en kolumn med det namnet i tabellen.

I tidigare versioner använder ett alternativ en sessionsvariabel istället för row_number() :

select @rn := @rn + 1 rn, order_id, items_in_order
from (
    select order_id, count(*) items_in_order
    from data
    group by order_id
    order by items_in_order desc
) t
cross join (select @rn := 0) r
order by items_in_order desc



  1. Få ett visst kolumnvärde i oracle med inre join

  2. mysql_insert_id med uppdatering

  3. Hur importerar man excel-fil till MySQL Workbench?

  4. MySQL INSERT fungerar korrekt enligt dokumentationen