Kueri Anda tidak terkait dengan data sampel Anda; namun Anda tampaknya menginginkan agregasi dan peringkat. Di MySQL 8.0, Anda akan melakukan:
select
row_number() over(order by count(*) desc) rn,
order_id,
count(*) items_in_order
from data
group by order_id
order by rn
Saya beri nama kolom pertama rn
(untuk peringkat ):Saya menemukan id
membingungkan di sini, karena Anda sudah memiliki kolom dengan nama itu di tabel.
Di versi sebelumnya, satu opsi menggunakan variabel sesi alih-alih 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