Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Contar a Ocorrência de Campo enquanto estiver sendo Agrupado por 2


Sua consulta não está relacionada aos seus dados de amostra; no entanto, você parece querer agregação e classificação. No MySQL 8.0, você faria:
select
    row_number() over(order by count(*) desc) rn,
    order_id,
    count(*) items_in_order
from data
group by order_id
order by rn

Eu nomeei a primeira coluna rn (para classificação ):encontro id confuso aqui, pois você já tem uma coluna com esse nome na tabela.

Nas versões anteriores, uma opção usa uma variável de sessão em vez de 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