sql >> Database >  >> RDS >> Mysql

maak een weergave die rang, gebruikersnaam en aantal gebruikersrecords krijgt

Je was op de goede weg. Moest alleen kleine wijzigingen aanbrengen. De volgende query geeft u de gewenste resultaten. In innerlijke query kreeg de eerste 4 kolommen en om rang te krijgen, voegde het kruis dat toe aan (SELECT @curRank := 0) r wat een MySQL-truc is om rang te krijgen. uiteindelijk moest ik gewoon bestellen bij Cnt om het te laten werken.

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

Om het in View te zetten, kun je de hack gebruiken die wordt beschreven door @Gordon-Linoff in deze vraag

De eindcode ziet er ongeveer zo uit.

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 wordt gebruikt om de eerste 4 kolommen te krijgen die u hebt gedefinieerd. TestView2 u selecteert gewoon alles uit de eerste weergave en voegt vervolgens een kolom toe die controleert of de waarde die u selecteert groter of kleiner is dan de waarde in eerste instantie van die weergave.



  1. WAMP upgraden naar MySQL 5.5?

  2. FOUT 2068 (HY000):LOAD DATA LOCAL INFILE-bestandsverzoek afgewezen vanwege toegangsbeperkingen

  3. Hoe NULL of niet geldig in HQL-query te controleren?

  4. PostgreSQL - hoe te bepalen of een transactie actief is?