将所有列除以另一列。还要将所有列除以汇总函数(最小值,最大值,总和,计数等)

时间:2018-10-22 19:13:18

标签: mysql sql aggregate-functions

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

表:

----------------
| 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   |
----------------------------

1 个答案:

答案 0 :(得分:0)

因此,您希望输出中使用运算符。您可以简单地这样做以获得第一个示例:

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

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

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

第二,如果您想获得平均值,则适用相同的逻辑。