Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да получите процент от общия брой, когато заявката има GROUP BY?

За големи набори JOIN може да работи по-добре от подзаявката.

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  

За големи набори и когато се връща голям процент от редовете, операцията JOIN обикновено може да превъзхожда подзаявката. Във вашия случай това не е свързана подзаявка, така че MySQL не трябва да я изпълнява няколко пъти, така че може да няма никаква разлика.

Бележка за нелюбителите на COUNT(1) ... бихме могли да заменим всички и всички поява на COUNT(1) с COUNT(*) или IFNULL(SUM(1),0) за постигане на еквивалентен резултат.



  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 Workbench с помощта на GUI

  2. Намерете редове, които имат една и съща стойност в колона в MySQL

  3. Скорост на заявка въз основа на реда на колоните

  4. Как да наблюдавам MySQL пространството?

  5. Мога ли да въведа парола веднъж за множество извиквания на командния ред на mysql, при които заявките не са известни предварително?