首页 > 解决方案 > 将所有列除以另一列。还将所有列除以聚合函数(最小值、最大值、总和、计数等)

问题描述

我猜如果不定义函数,这是不可能的。这个想法是你有一张像

桌子:

----------------
| A | B | Total|
|---|---|------|
| 1 | 2 |  3   |
| 4 | 5 |  9   |
| 6 | 7 | 13   |
----------------

select */Total from table

----------------------------
|   A   |   B   |   Total  |
|-------|-------|----------|
| 0.333 | 0.667 |  1.00    |
| 0.8   | 0.556 |  1.00    |
| 0.462 | 0.538 |  1.00    |
----------------------------

select */(select max(*) from table) from table

----------------------------
|   A   |   B   |   Total  |
|-------|-------|----------|
| 0.167 | 0.286 |  0.231   |
| 0.667 | 0.714 |  0.692   |
| 1.000 | 1.000 |  1.000   |
----------------------------

标签: mysqlsqlaggregate-functions

解决方案


因此,您需要在输出中使用运算符。您可以简单地执行此操作以获得您的第一个示例:

SELECT A/total, B/total, (A+B)/total FROM `table`

您甚至不需要“总计”列:

SELECT A/(A+B), B/(A+B), 1 as total FROM `table`

第二个,如果你想得到平均值,同样的逻辑也适用。


推荐阅读