postgresql - Postgres数据库中2个表中列平均值的差异
问题描述
我已经根据一列的平均值将一个表拆分为 2,现在我想计算新表中其他列的平均值的差异。
例如(简化示例,我的数据有 5 列)
t1 = 'id', 'price', 'size'
1 , 10.0, 3
..., ..., ...
10, 6.50, 8
t2 = 'id', 'price', 'size'
11 , 12.12, 3
..., ..., ...
20, 3.50, 5 '
diff_table = 'diff_price' ,'diff_size'
t1.avg_price - t2.avg_price, t1.avg_size - t2.avg_size
解决方案
嗯,很简单:
SELECT
avg(t1.price) - avg(t2.price) AS diff_price,
avg(t1.size) - avg(t2.size) AS diff_size
FROM t1, t2;
示例:https ://www.db-fiddle.com/f/eXuc1bUyxAHhWo2Yu91GMt/0
如果您需要将该数据放入新表中,只需使用显式列类型比例执行以下操作):
CREATE TABLE diff_table AS
SELECT
(avg(t1.price) - avg(t2.price))::decimal(10,2) AS diff_price,
(avg(t1.size) - avg(t2.size))::decimal(10,2) AS diff_size
FROM t1, t2;
...结果:
Table "public.diff_table"
Column | Type | Collation | Nullable | Default
------------+---------------+-----------+----------+---------
diff_price | numeric(10,2) | | |
diff_size | numeric(10,2) | | |
推荐阅读
- javascript - Node JS找不到模块
- jquery - getJson 和 Cycle2
- c++ - c++中的左旋转操作
- google-sheets - 通过首先过滤从表中连接
- angular - Angular2-signaturepad 与 Angular 一起使用会导致找不到模块错误
- laravel - 如何使用 vue @click 和 axios 解决 500 错误
- python - Python ffmpeg 不接受路径,为什么?
- php - 如何在控制器的构造函数中获取会话数据
- php - $var->toJson 不显示完整的消息
- javascript - 在 Opera 上使用 jQuery 获取 JSON 数据会出错