具有唯一表单元格的 SQL 算术

标签 sql postgresql

我有两个表(使用 PostgreSQL),它们看起来如下:

表1(p点从1到450递增1)

--------+-------+--------+---------+---------+-------+
 ppoint | tom08 | tom920 | tom2135 | tom3650 | tom51 |
--------+-------+--------+---------+---------+-------+
 1      | 2.5   | 125    | 52.5    | 15      | 2.5   |
 ...    | ...   | ...    | ...     | ...     | ...   |
 450    | 0     | 7.5    | 87.5    | 0       | 0     |
--------+-------+--------+---------+---------+-------+

表2

--------+-------+
 ppoint |  tom  |
--------+-------+
 1      | 197.5 |
 ...    | ...   |
 450    | 95    |
--------+-------+

表 2 的“tom”列是表 1“tom...”值的总和。

我想将表 1 中的每个“tom...”单元格与表 2 的相应汇总值相除。

我使用以下方法获得了一个值:

SELECT
    (SELECT tom08 FROM Table1 WHERE ppoint = 1)/
    (SELECT tom FROM Table 2 WHERE ppoint = 1)
    FROM Table1 WHERE ppoint = 1

但它仍然只有一个值,我想将每个单元格与相应的 Table2 汇总值分开并放入一个新表中(覆盖 Table1 也是一种选择)。

这个新表的第 1 行(第 1 列是相应的“ppoint”)应该包含:

tom08 (FROM Table1 WHERE ppoint=1)/tom (FROM Table2 WHERE ppoint=1)
tom920 (FROM Table1 WHERE ppoint=1)/tom (FROM Table2 WHERE ppoint=1)
tom2135 (FROM Table1 WHERE ppoint=1)/tom (FROM Table2 WHERE ppoint=1)
tom3650 (FROM Table1 WHERE ppoint=1)/tom (FROM Table2 WHERE ppoint=1)
tom51 (FROM Table1 WHERE ppoint=1)/tom (FROM Table2 WHERE ppoint=1)

这个新表的第 2 行应该包含:

tom08 (FROM Table1 WHERE ppoint=2)/tom (FROM Table2 WHERE ppoint=2)
tom920 (FROM Table1 WHERE ppoint=2)/tom (FROM Table2 WHERE ppoint=2)
tom2135 (FROM Table1 WHERE ppoint=2)/tom (FROM Table2 WHERE ppoint=2)
tom3650 (FROM Table1 WHERE ppoint=2)/tom (FROM Table2 WHERE ppoint=2)
tom51 (FROM Table1 WHERE ppoint=2)/tom (FROM Table2 WHERE ppoint=2)

依此类推,直到 450,所以决赛 table 应该看起来像下面这样:

+--------+-------------+-------------+-------------+-------------+-------------+
| ppoint |    tom08    |   tom920    |   tom2135   |   tom3650   |    tom51    |
+--------+-------------+-------------+-------------+-------------+-------------+
|      1 | 0.012658228 | 0.632911392 | 0.265822785 | 0.075949367 | 0.012658228 |
|     ...| ...         | ...         | ...         | ...         | ...         |
|      2 | 0           | 0.078947368 | 0.921052632 | 0           | 0           |
+--------+-------------+-------------+-------------+-------------+-------------+

有什么解决办法吗?你有什么建议吗? 对不起我的英语 - 这可能不是解释我的问题的最佳方式:) 谢谢!

最佳答案

如果我没理解错的话,我想这就是您要找的。

SELECT tom08/tom, tom920/tom, tom2135/tom, tom3650/tom, tom51/tom  
FROM table1 t1, table2 t2 
WHERE t1.ppoint = t2.ppoint;

关于具有唯一表单元格的 SQL 算术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25141164/

相关文章:

sql - 将子表连接到主表

SQL 触发器 - 基础知识帮助

java - 断言失败 : null id sometimes thrown when Hibernate query objects

sql:聚合函数和字符串连接/连接

java - 事务在使用 OpenJPA 时处于非 Activity 状态

删除/插入行的 SQL CTE 语法

sql - 在 if 语句中引用数据库

mysql - 从另一个表中选择一列的值并明确提供其他值

php - 我如何按不同日期进行分组并对组日期的每个数据求和

node.js - Knex 不会结束连接 Postgres