我有一个MySQL查询运行一个简短的操作(总计一个select语句中的计数),我想使用结果进行数学运算,但我收到一个错误.
表:
id | group | count |
-----------------------------
1 1 3
2 1 2
Run Code Online (Sandbox Code Playgroud)
查询:
select id, count,
(select sum(count) from table group by group) as total,
count/total as percent
from table
Run Code Online (Sandbox Code Playgroud)
该错误是因为表中没有真正的"总"列.如何使查询工作?
Roc*_*mat 23
您可以保存total为变量,然后在除法计算中使用它.
SELECT
`id`, `count`,
@total:=(SELECT sum(`count`) FROM `table` GROUP BY `group`) AS `total`,
`count`/@total AS `percent`
FROM `table`
Run Code Online (Sandbox Code Playgroud)
注意:GROUP是MySQL中的保留字.你应该将它(和所有其他字段/表名)括在反引号(`)中.
您也可以在不引入变量的情况下执行此操作:
select id,
count,
(select sum(count) from `table` group by `group`) as total,
(select count/total) as percent
from `table`;
Run Code Online (Sandbox Code Playgroud)
生产:
+------+-------+-------+---------+
| id | count | total | percent |
+------+-------+-------+---------+
| 1 | 3 | 5 | 0.6000 |
| 2 | 2 | 5 | 0.4000 |
+------+-------+-------+---------+
2 rows in set (0.05 sec)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16558 次 |
| 最近记录: |