Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

buat tampilan yang mendapat peringkat, nama pengguna, dan jumlah catatan pengguna

Anda berada di jalur yang benar. Hanya perlu melakukan perubahan kecil. Kueri berikut akan memberi Anda hasil yang diinginkan. Dalam kueri dalam, dapatkan 4 kolom pertama dan untuk mendapatkan silang peringkat, gabungkan itu ke (SELECT @curRank := 0) r yang merupakan trik MySQL untuk mendapatkan peringkat. pada akhirnya hanya perlu memesan oleh Cnt untuk membuatnya berfungsi.

SELECT username
    ,userid
    ,category
    ,Cnt
    ,@curRank := @curRank + 1 AS rank
    FROM (
            SELECT b.Username
                ,B.userid
                ,A.category
                ,count(*) Cnt
            FROM tblb B 
            JOIN tbla A
                ON B.UserID = A.User
            WHERE a.Category = 1
            GROUP BY b.username
        )a
,(SELECT @curRank := 0) r
Order by cnt desc

Untuk memasukkannya ke dalam Tampilan, Anda dapat menggunakan peretasan yang dijelaskan oleh @Gordon-Linoff dalam pertanyaan ini

Kode akhir akan terlihat seperti ini.

CREATE VIEW TestView1
AS
    SELECT b.Username
           ,B.userid
           ,A.category
           ,COUNT(*) Cnt
        FROM tblb B
        JOIN tbla A
            ON B.UserID = A.User
        WHERE a.Category = 1
        GROUP BY b.username
        ORDER BY cnt DESC;

CREATE VIEW TestView2
AS
    SELECT t1.*
           ,( SELECT 1 + COUNT(*)
                FROM TestView1 AS t2
                WHERE t2.Cnt > t1.Cnt
                    OR (
                         t2.Cnt = t1.Cnt
                         AND t2.userid < t1.userid ) ) AS Rank
        FROM TestView1 AS t1

TestView1 digunakan untuk mendapatkan 4 kolom pertama yang Anda tetapkan. TestView2 Anda cukup memilih semuanya dari tampilan pertama dan kemudian menambahkan kolom yang memeriksa untuk melihat apakah nilai yang Anda pilih lebih besar atau lebih kecil dari nilai pada contoh pertama tampilan itu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kerusakan MySQL Innodb

  2. Utas Java dan MySQL

  3. Cocokkan Regex di MySQL untuk kata yang diulang dengan kondisi tidak termasuk tanda kurung

  4. Operasi dalam grup saat GROUP BY

  5. gitlab runner:mysqld:Tidak dapat membaca direktori '/etc/mysql/conf.d/'