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

Jak získat procento z celkového počtu, když má dotaz GROUP BY?

U velkých sad může mít JOIN lepší výkon než dílčí dotaz.

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  

U velkých sad a při vracení velkého procenta řádků může operace JOIN obvykle překonat poddotaz. Ve vašem případě se nejedná o korelovaný poddotaz, takže MySQL by to nemělo spouštět vícekrát, takže v tom nemusí být žádný rozdíl.

Poznámka pro nefanoušky COUNT(1) ... mohli bychom nahradit všechny výskyty COUNT(1) s COUNT(*) nebo IFNULL(SUM(1),0) k dosažení ekvivalentního výsledku.



  1. SQL:Jak najít duplikáty na základě dvou polí?

  2. Jak mohu seřadit id a sub_id v sestupném pořadí?

  3. Jak nainstalovat databázi MariaDB v Debianu 10

  4. Problém s MySQL Match