按条件和精度从组中获取MySql的百分比

use*_*579 3 mysql group-by

我正要问这个MySql列表并记得SO.

运行MySql 5.0.85,我需要尽可能高效地查询一些查询.如果我能得到一点评论,我将不胜感激.

我收集了数百万的数据,需要按一个字段分组的前50个,占前50个占据的百分比.

以下是我的想法... 1)我有一种感觉我可以更有效率,也许是加入2)我怎样才能得到百分比精度百分比,所以*100.00即:.07变为7.00,如果我得到SQL错误(百分比*100)

SELECT user_agent_parsed, user_agent_original, COUNT( user_agent_parsed ) AS thecount, 
    COUNT( * ) / ( SELECT COUNT( * ) FROM agents ) AS percentage
FROM agents
GROUP BY user_agent_parsed
ORDER BY thecount DESC LIMIT 50;
Run Code Online (Sandbox Code Playgroud)

第二个问题,每天一次我需要归档上面的结果.有关如何最好地做到这一点的任何建议?我可以安排使用cron,或者在我的情况下,启动,除非有人有更好的建议.

你会认为一个简单的'SELECT(上面的)INTO foo'就够了吗?

lex*_*exu 8

首要问题:

select count(*) from agents into @AgentCount;

SELECT user_agent_parsed
     , user_agent_original
     , COUNT( user_agent_parsed )  AS thecount
     , COUNT( * ) / ( @AgentCount) AS percentage
 FROM agents
GROUP BY user_agent_parsed
ORDER BY thecount DESC LIMIT 50;
Run Code Online (Sandbox Code Playgroud)

  • 不需要双选,MySql优化器,至少在5.x中处理它. (2认同)