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

truy vấn xếp hạng của người dùng trong một-nhiều bảng

SELECT u.id,total_score,
 ( SELECT COUNT(*) FROM
    (SELECT u1.id, (IFNULL(u1.freebee,0)+ IFNULL(SUM(score),0)) as total_score
     FROM users u1
     LEFT JOIN games g ON (g.userId = u1.id)
     GROUP BY u1.id
    )x1
   WHERE x1.total_score > x.total_score
 )+1 as rank,

( SELECT COUNT(DISTINCT total_score) FROM
    (SELECT u1.id, (IFNULL(u1.freebee,0)+ IFNULL(SUM(score),0)) as total_score
     FROM users u1
     LEFT JOIN games g ON (g.userId_Id = u1.id)
     GROUP BY u1.id
    )x1
   WHERE x1.total_score > x.total_score
 )+1 as dns_rank

 FROM users u

 LEFT JOIN
  ( SELECT u1.id, (IFNULL(u1.freebee,0)+ IFNULL(SUM(score),0)) as total_score
    FROM users u1
    LEFT JOIN games g ON (g.userId = u1.id)
    GROUP BY u1.id
  )x ON (x.id = u.id)

rank - (xếp hạng bình thường - ví dụ - 1,2,2,4,5), dns_rank - hạng dày đặc (1,2,2,3,4). Cột total_score - chỉ để gỡ lỗi ...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách tính độ dốc trong SQL

  2. Làm cách nào để thực hiện truy vấn lớn nhất-n-mỗi nhóm nhanh hơn?

  3. MySQL INSERT SELECT - Các hàng trùng lặp

  4. PHP / MySQLi:Cách ngăn chặn việc đưa SQL vào INSERT (mã hoạt động một phần)

  5. Làm cách nào để lập chỉ mục một bảng liên kết cho kết nối nhiều-nhiều trong MySQL?