Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

एक ऐसा दृश्य बनाएं जो उपयोगकर्ता रिकॉर्ड की रैंक, उपयोगकर्ता नाम और गिनती प्राप्त करे

आप सही रास्ते पर थे। बस मामूली बदलाव करने की जरूरत है। निम्नलिखित क्वेरी आपको वांछित परिणाम देगी। आंतरिक क्वेरी में पहले 4 कॉलम मिले और रैंक क्रॉस प्राप्त करने के लिए उसमें शामिल हो गए (SELECT @curRank := 0) r जो रैंक प्राप्त करने के लिए MySQL ट्रिक है। अंत में बस इसे काम करने के लिए Cnt द्वारा ऑर्डर करने की आवश्यकता है।

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

इसे देखने के लिए आप @Gordon-Linoff द्वारा वर्णित हैक का उपयोग कर सकते हैं। इस प्रश्न में

एंड कोड कुछ इस तरह दिखेगा।

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 आपके द्वारा परिभाषित पहले 4 कॉलम प्राप्त करने के लिए उपयोग किया जाता है। TestView2 आप पहले दृश्य से सब कुछ चुनते हैं और कॉलम जोड़ने के बजाय यह देखने के लिए जांचते हैं कि आपके द्वारा चुना गया मान उस दृश्य के पहले उदाहरण में मूल्य से बड़ा या छोटा है या नहीं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. COALESCE() रिक्त (लेकिन शून्य नहीं) फ़ील्ड के लिए

  2. किसी अन्य तालिका से MySQL में सम्मिलित करें

  3. एक mysql कथन में * तारांकन का क्या अर्थ है?

  4. इमोजी को डेटाबेस में स्टोर नहीं कर सकता

  5. लूपिंग के अंदर ऐरे के साथ चेकबॉक्स गलत परिणाम?