高效的MySQL查询来计算百分比

时间:2012-07-31 04:26:20

标签: mysql

我是MySQL的新手,来自Oracle背景。我有一个SQL查询,用于计算表中类型的总计数和百分比。

例如:

SELECT type,count(*) count_by_type ,a.tot total, (COUNT(*)*100/a.total) percent 
FROM xyz
JOIN (select count(*) tot from xyz)a
GROUP by type
HAVING type = 'abc';

此查询正在进行自我加入。有没有更简单的方法来实现相同的目标?

2 个答案:

答案 0 :(得分:0)

无需在此使用SELF JOINHAVING子句。试试看:

SELECT COUNT(1) INTO @var_total FROM xyz;

SELECT type, count(1) AS count_by_type,
        @var_total total,
        (COUNT(1)*100/@var_total) AS percent
FROM xyz a
WHERE type = 'abc';
GROUP by type;

答案 1 :(得分:0)

SELECT type,count(1) count_by_type ,(select count(1) from xyz) total,
(count_by_type*100/total) percent  FROM xyz WHERE type = 'abc';