sql >> Base de Datos >  >> RDS >> Mysql

Cuente la ocurrencia de campo mientras está agrupado por 2

Su consulta no se relaciona con sus datos de muestra; sin embargo, parece que desea agregación y clasificación. En MySQL 8.0, haría:

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

Llamé a la primera columna rn (para rango ):encuentro id confuso aquí, ya que ya tiene una columna con ese nombre en la tabla.

En versiones anteriores, una opción usa una variable de sesión en lugar 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