我是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';
此查询正在进行自我加入。有没有更简单的方法来实现相同的目标?
答案 0 :(得分:0)
无需在此使用SELF JOIN
和HAVING
子句。试试看:
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';