Mysql
 sql >> база данни >  >> RDS >> Mysql

Преброяване на появяването на поле, докато е групирано по 2

Вашето запитване не се отнася до вашите примерни данни; въпреки това изглежда искате агрегиране и класиране. В 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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как мога да почистя временни таблици на mysql

  2. Промяна на паролата за root на MySQL

  3. mysql count общо от поле със стойности, разделени със запетая

  4. Оптимизиране на MySQL Import (Преобразуване на подробен SQL Dump в Speedy One / използване на разширени вмъквания)

  5. подреждане по в рамките на групата concat