आपकी क्वेरी आपके नमूना डेटा से संबंधित नहीं है; हालांकि ऐसा लगता है कि आप एकत्रीकरण और रैंकिंग चाहते हैं। 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
मिल रहा है यहाँ भ्रमित है, क्योंकि आपके पास पहले से ही तालिका में उस नाम का एक कॉलम है।
पुराने संस्करणों में, एक विकल्प 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