我有一个MySQL查询,它运行一个简短的操作(在select语句中对计数求和),并且我想使用结果进行数学操作,但是我得到了一个错误。
表:
id | group | count |
-----------------------------
1 1 3
2 1 2查询:
select id, count,
(select sum(count) from table group by group) as total,
count/total as percent
from table错误是因为表中没有真正的"total“列。我怎样才能使查询起作用?
发布于 2011-12-30 23:59:34
您可以将total另存为variable,然后在除法计算中使用它。
SELECT
`id`, `count`,
@total:=(SELECT sum(`count`) FROM `table` GROUP BY `group`) AS `total`,
`count`/@total AS `percent`
FROM `table`注意:GROUP是MySQL中的reserved word。您应该用反引号(`)将它(以及所有其他字段/表名)括起来。
发布于 2016-12-09 04:39:56
您也可以在不引入变量的情况下执行此操作:
select id,
count,
(select sum(count) from `table` group by `group`) as total,
(select count/total) as percent
from `table`;产生:
+------+-------+-------+---------+
| id | count | total | percent |
+------+-------+-------+---------+
| 1 | 3 | 5 | 0.6000 |
| 2 | 2 | 5 | 0.4000 |
+------+-------+-------+---------+
2 rows in set (0.05 sec)发布于 2011-12-31 00:24:01
您的问题是,内部查询需要每行生成1个结果,而不是为每个组生成1个结果。您希望在内部查询中添加一个where子句,如下所示
where inner_table.group = outer_table.group
因此只返回一个结果。
https://stackoverflow.com/questions/8681299
复制相似问题