首页 > 解决方案 > SQL将列除以另一个表中的数字

问题描述

我有两张桌子:

total_table = 
| Title | Value |
|-------|-------|
| total |   20  |

breakdown_table =
|  Title | Value |
|--------|-------|
|  total |   20  | (this is the same as the above table)
| type a |   10  |
| type b |    5  |
| type c |    5  |

我想创建一个新表,其中包含两列,breakdown_table但添加第三列显示细分百分比(100%、50%、25%、25%)。如何在不对分母进行硬编码的情况下做到这一点?

这是我尝试过的一些语法,但它不断给我关于逗号和等值连接的错误。我不想用键连接表,我只想使用total_table.

data_out = SELECT breakdown_table.*,
                  breakdown_table.Value / total.Value
           FROM breakdown_table, total_table;

标签: sql

解决方案


您可以交叉连接表(正确):

SELECT 
  b.*, 
  100.0 * b.Value / t.Value as data_out
FROM breakdown as b cross join total as t;

推荐阅读