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

Bagaimana cara mendapatkan persentase total ketika kueri memiliki GROUP BY?

Untuk set besar, JOIN mungkin berkinerja lebih baik daripada subquery.

SELECT ma.actor
     , COUNT(1) AS total
     , COUNT(1) / t.cnt * 100 AS `percentage`
  FROM movies_actors ma
 CROSS
  JOIN (SELECT COUNT(1) AS cnt FROM movies_actors) t
 GROUP
    BY ma.actor
     , t.cnt  

Untuk kumpulan besar, dan ketika sebagian besar baris dikembalikan, operasi GABUNG biasanya dapat mengungguli subkueri. Dalam kasus Anda, ini bukan subkueri yang berkorelasi, jadi MySQL tidak perlu mengeksekusinya beberapa kali, jadi mungkin tidak ada bedanya.

Catatan untuk non-penggemar COUNT(1) ... kita dapat mengganti setiap dan semua kemunculan COUNT(1) dengan COUNT(*) atau IFNULL(SUM(1),0) untuk mencapai hasil yang setara.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL Daftar Semua Prosedur

  2. Cara Mengembalikan Hasil Kueri sebagai Daftar Dipisahkan Koma di MySQL

  3. Cara mengurai waktu dari database

  4. MySQL menambahkan 12 jam ke bidang waktu

  5. Bagaimana saya tahu kapan wadah mysql buruh pelabuhan saya habis dan mysql siap untuk menerima kueri?