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

Conta l'occorrenza del campo mentre sei Raggruppa per 2

La tua richiesta non si riferisce ai tuoi dati di esempio; tuttavia sembri volere aggregazione e classifica. In MySQL 8.0, faresti:

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

Ho chiamato la prima colonna rn (per grado ):trovo id confusione qui, dal momento che hai già una colonna con quel nome nella tabella.

Nelle versioni precedenti, un'opzione utilizza una variabile di sessione invece di 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