クエリはサンプルデータとは関係ありません。ただし、集計とランキングが必要なようです。 MySQL 8.0では、次のようにします。
select
row_number() over(order by count(*) desc) rn,
order_id,
count(*) items_in_order
from data
group by order_id
order by rn
最初の列にrn
という名前を付けました (ランク ):id
が見つかりました テーブルにその名前の列がすでにあるため、ここでは混乱します。
以前のバージョンでは、1つのオプションで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