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

Nhận top-k của mỗi nhóm trong MySQL

Hãy thử cái này:

select postid, clicks,
    @num := if(@year = @year and @month = month, @num + 1, 1) row_number,
    @year := year year, @month := month month
from (
    select * from t
    order by year, month, clicks desc
) s, (select @num := 0, @year := '', @month := '') init
group by year, month, postid, clicks
having row_number <= 2
order by year, month, clicks desc

Fiddle tại đây




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. So sánh hai thiết kế db cho nhắn tin nội bộ

  2. Kiểm tra cơ sở dữ liệu nếu tồn tại bằng Laravel

  3. Khi nào thì MySQL cố gắng cập nhật chỉ mục cho một cột?

  4. Có cách nào để cho phép máy chủ MySQL 'đẩy' các bản cập nhật DB cho một chương trình khách không?

  5. MySQL:Tóm tắt tất cả số hàng của bảng trong một truy vấn duy nhất