sql - 在PostgreSQL中划分两个查询
问题描述
我试图在 PostgreSQL 中划分两个查询:
我的样本数据是:
time coil_id pushing_force drawing_force
"2017-08-15 23:03:23.1" 0 855.125 0
"2017-08-15 23:03:23.11" 0 822.12 0
"2017-08-15 23:03:23.12" 0 0 771.572
"2017-08-15 23:03:23.13" 0 0 772.572
"2017-08-15 23:03:23.14" 1 899.92 0
"2017-08-15 23:03:23.15" 1 821.12 0
"2017-08-15 23:03:23.16" 1 0 742.15
"2017-08-15 23:03:23.17" 2 892.1 0
"2017-08-15 23:03:23.18" 2 0 775.528
"2017-08-15 23:03:23.19" 2 0 771.572
"2017-08-15 23:03:23.2" 3 955.52 0
"2017-08-15 23:03:23.21" 3 0 768.866
"2017-08-15 23:03:23.22" 3 0 765.866
我的第一个查询是:
SELECT avg(d1.pushing_force)*0.1
FROM drawing d1, (
SELECT coil_id, max(drawing_force) as mdrawing_force
FROM drawing
GROUP BY coil_id
) d2
WHERE d1.pushing_force > d2.mdrawing_force
AND d1.coil_id = d2.coil_id
GROUP BY d1.coil_id
ORDER BY d1.coil_id
输出:
96.0686237179488
98.2271765407554
98.3511043388427
99.0244
99.782412195122
98.9033064593301
我的第二个查询是:
SELECT AVG(drawing_force)*0.1 from drawing group by coil_id order by coil_id
输出 :
67.4467013876606
34.7058347285139
45.304114594917
36.9346255571282
33.4687833398917
24.9778648102293
30.40511668208
我想划分query1/query2来查看输出
解决方案
如果我很了解您,您希望将两个查询的结果合并为一个,并且您希望将平均值除以平均值pushing_force
以drawing_force
获得每个查询的结果 coil_id
。
尝试这个:
SELECT t1.coil_id, t1.avg_pushingforce, t2.avg_drawing_force, t1.avg_pushingforce/t2.avg_drawing_force as result
FROM
(
SELECT coil_id, avg(d1.pushing_force)*0.1 as avg_pushingforce
FROM drawing d1
INNER JOIN
(
SELECT coil_id, max(drawing_force) as mdrawing_force
FROM drawing
GROUP BY coil_id
) d2 ON d1.pushing_force > d2.mdrawing_force AND d1.coil_id = d2.coil_id
GROUP BY d1.coil_id
) t1 INNER JOIN
(
SELECT coil_id, avg(drawing_force)*0.1 as avg_drawing_force
FROM drawing
GROUP BY coil_id
) t2 ON t1.coil_id = t2.coil_id
ORDER BY t1.coil_id
注意:我使用而不是在子句join
中加入表。where
请参阅:SQL 连接的可视化表示
推荐阅读
- angular - Angular 指令单元测试
- ios - 如何在 BlueSocket 中使用 UnSafeRawPointer 读取/写入数据?
- django - 如何选择与 Django 模型不同的选项
- r - 将 `zoo:rollapply` 的 `width` 参数作为参数传递给被调用函数
- javascript - 有办法显示我的头像 png 吗?因为它不像我的例子那样工作
- php - 如何在sql行中已有的值中添加新值
- typescript - 带定时器的对话框
- python - For循环在另一个数据框中查找行
- django - 如何从普通函数调用基于 django 类的视图获取函数?
- php - 如何在 Laravel 5.3 中得到 guzzle 的响应