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作为有用百分比第二列给出答案。谢谢。第二个给了我答案。谢谢