sql >> Databáze >  >> RDS >> Mysql

vytvořit pohled, který získá hodnost, uživatelské jméno a počet uživatelských záznamů

Byl jsi na správné cestě. Jen bylo potřeba udělat drobné změny. Následující dotaz vám poskytne požadované výsledky. Ve vnitřním dotazu jsem dostal první 4 sloupce a pro získání pořadí se to spojilo s (SELECT @curRank := 0) r což je MySQL trik pro získání hodnosti. nakonec stačilo objednat u Cnt, aby to fungovalo.

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

Chcete-li to vložit do zobrazení, můžete použít hack popsaný @Gordon-Linoff v této otázce

Koncový kód bude vypadat nějak takto.

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 se používá k získání prvních 4 sloupců, které jste definovali. TestView2 stačí vybrat vše z prvního pohledu a poté přidat sloupec, který zkontroluje, zda je hodnota, kterou vyberete, větší nebo menší než hodnota v prvním případě tohoto pohledu.



  1. Jak přidat skupinu souborů do databáze SQL Server (T-SQL)

  2. Zastavení dotazu MySQL po prvním řádku

  3. PostgreSQL:duplicitní hodnota klíče porušuje jedinečné omezení příkazu UPDATE

  4. Je jméno vyhrazené slovo v MySQL?