繁体   English   中英

将所有列除以另一列。 还按聚合函数(最小值、最大值、总和、计数等)划分所有列

[英]Divide all columns by another column. Also divide all columns by aggregate function(min, max, sum, count, etc.)

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

桌子:

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM