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

Masalah N teratas per Grup Sql di mysql

Ini mungkin tidak terlalu bagus, tapi saya pikir ini akan berhasil:

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. Parsing string XML di MySQL

  2. Panjang maksimum untuk teks tipe MySQL

  3. Apakah MySQL menghilangkan subekspresi umum antara klausa SELECT dan HAVING/GROUP BY?

  4. Bagaimana saya bisa mengukur waktu mysql, waktu dan/atau memuat kueri sql di php?

  5. Bagaimana saya bisa mengatur jumlah baris maksimum di tabel MySQL?