Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Đếm sự xuất hiện của trường trong khi được nhóm theo 2

Truy vấn của bạn không liên quan đến dữ liệu mẫu của bạn; tuy nhiên bạn dường như muốn tổng hợp và xếp hạng. Trong MySQL 8.0, bạn sẽ thực hiện:

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

Tôi đã đặt tên cho cột đầu tiên là rn (cho thứ hạng ):Tôi tìm thấy id khó hiểu ở đây, vì bạn đã có một cột có tên đó trong bảng.

Trong các phiên bản trước đó, một tùy chọn sử dụng biến phiên thay vì 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. Kết nối Propel an toàn, MySQL từ xa

  2. Thiếu dấu chấm phẩy ở cuối dòng của tập lệnh sql do JPA tạo

  3. Sql - đếm thành nhiều cột

  4. mysql GROUP_CONCAT trùng lặp

  5. Cách hiển thị hình ảnh từ cơ sở dữ liệu bằng php