Mysql 在Sql中执行a/(a+b)
我正在执行以下代码,但无法获得正确的百分比作为输出Mysql 在Sql中执行a/(a+b),mysql,sql,Mysql,Sql,我正在执行以下代码,但无法获得正确的百分比作为输出 Select name, fans, useful, funny, (useful/(Select (useful+funny) from user)) As useful_percent From user Order by fans desc limit 10 输出是这样的, +-----------+------+--------+--------+----------------+ | name | fans | usefu
Select
name,
fans,
useful,
funny,
(useful/(Select (useful+funny) from user)) As useful_percent
From user
Order by fans desc
limit 10
输出是这样的,
+-----------+------+--------+--------+----------------+
| name | fans | useful | funny | useful_percent |
+-----------+------+--------+--------+----------------+
| Amy | 503 | 3226 | 2554 | 36 |
| Mimi | 497 | 257 | 138 | 2 |
| Harald | 311 | 122921 | 122419 | 1381 |
| Gerald | 253 | 17524 | 2324 | 196 |
| Christine | 173 | 4834 | 6646 | 54 |
| Lisa | 159 | 48 | 13 | 0 |
| Cat | 133 | 1062 | 672 | 11 |
| William | 126 | 9363 | 9361 | 105 |
| Fran | 124 | 9851 | 7606 | 110 |
| Lissa | 120 | 455 | 150 | 5 |
+-----------+------+--------+--------+----------------+
有人请解释一下代码出了什么问题?您的选择应该会导致错误,因为Select USABLE+FUNCY from user返回多行 你可能想要
Select
name,
fans,
useful,
funny,
100.0 * useful/(useful+funny) As useful_percent
From user
Order by fans desc
limit 10
您的选择将导致错误,因为Select USABLE+FUNCY from user返回多行 你可能想要
Select
name,
fans,
useful,
funny,
100.0 * useful/(useful+funny) As useful_percent
From user
Order by fans desc
limit 10
试试这个简单的查询
Select
name,
fans,
useful,
funny,
(useful/(useful+funny)) As useful_percent
From user
Order by fans desc
limit 10
或有用的百分比%值,然后使用如下查询
Select
name,
fans,
useful,
funny,
((useful/(useful+funny)) * 100.0) As useful_percent
From user
Order by fans desc
limit 10
试试这个简单的查询
Select
name,
fans,
useful,
funny,
(useful/(useful+funny)) As useful_percent
From user
Order by fans desc
limit 10
或有用的百分比%值,然后使用如下查询
Select
name,
fans,
useful,
funny,
((useful/(useful+funny)) * 100.0) As useful_percent
From user
Order by fans desc
limit 10
我建议您使用nullif以避免被零除的问题:
Select name, fans, useful, funny,
useful / nullif(useful + funny, 0) As useful_percent
From user
Order by fans desc
limit 10;
正如其他答案中所解释的,子查询不合适。我建议您使用nullif以避免被零除的问题:
Select name, fans, useful, funny,
useful / nullif(useful + funny, 0) As useful_percent
From user
Order by fans desc
limit 10;
如其他答案所述,子查询不合适。百分比表示与100相关,您没有将最后一列乘以100使用有用/有用+有趣*100作为有用的百分比表示与100相关,你没有用100乘以最后一列有用/有用+有趣*100作为有用百分比第二列给出答案。谢谢。第二个给了我答案。谢谢