我正在尝试计算查询中派生列的百分比。我的查询返回所有预期数据,但NULL
百分比列除外。
SELECT items_type_catalog.id,
items_type_catalog.description,
items_header.tipo, items_type_catalog.color,
@solved :=COUNT(CASE WHEN (items_header.stato = 4 OR items_header.stato= 5) THEN 1 END) AS solved,
@tutti:=count(items_header.id) as tutti,
(ROUND(@solved/@tutti,0)*100) as percentage
FROM items_type_catalog LEFT JOIN items_header ON items_type_catalog.id=items_header.tipo AND items_header.progetto=1
GROUP BY items_type_catalog.id, tipo
在这一点上我看不出我做错了什么。为什么它不进行数学运算并返回 NULL?
https://dev.mysql.com/doc/refman/8.0/en/user-variables.html
这意味着您显示的用法(在计算表达式之前假设
@solved
并分配的用法)不可靠。@tutti
percentage
更好的方法是将查询放入子查询中,然后使用别名计算外部查询中的表达式: