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

Mysql में शीर्ष एन प्रति समूह एसक्यूएल समस्या

यह बहुत सुंदर नहीं हो सकता है, लेकिन मुझे लगता है कि यह काम करेगा:

SELECT cat_id, prod, pos FROM (
    SELECT cat_id, pos, prod, if(@last_id = cat_id, @cnt := @cnt + 1, (@cnt := 0 || @last_id := cat_id)) cnt
    FROM (
        SELECT p.cat_id, pseq.cnt pos, pseq.prod
        FROM (
            SELECT prod, count(*) cnt FROM prods GROUP BY prod ORDER BY cnt DESC
        ) pseq
        INNER JOIN prods p ON p.prod = pseq.prod
        ORDER BY cat_id, pseq.cnt DESC
    ) po
) plist
WHERE cnt <= 3;

Based on the above data, this will return:
+--------+-----------+-----+
| cat_id | prod      | pos |
+--------+-----------+-----+
|      1 | spl php   |   2 |
|      1 |  kntrn    |   1 |
|      1 | kntrn e   |   1 |
|      2 | spl php   |   2 |
|      2 |  zlv      |   1 |
|      2 | zlv enter |   1 |
+--------+-----------+-----+



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. उपयोगकर्ता चर से जुड़े भावों के मूल्यांकन का क्रम अपरिभाषित क्यों है?

  2. हैवी जॉइन के साथ MySQL क्वेरी को ऑप्टिमाइज़ करना

  3. Node.js और Express के साथ अपना पहला API कोड करें:एक डेटाबेस कनेक्ट करें

  4. जावा - थ्रेड मुख्य में अपवाद java.lang.Error:अनसुलझे संकलन समस्याएं

  5. एक सबमिट बटन के साथ एक बार में mysql तालिका में एकाधिक इनपुट करें