sql - 在 Postgres 中执行 sql 查询的问题
问题描述
我想执行此查询,但无法在 where 条件中使用 max(),请帮助我执行此查询:
SELECT AVG(pushing_force)
from drawing
where pushing_force > max(drawing_force)
group by coil_id
order by coil_id
ERROR: ERROR: Aggregate functions are not allowed in WHERE<br> LINE 1: ...pushing_force) from drawing where pushing_force > max(drawin... ^
我想计算每个线圈的 push_force 高于最大drawing_force 的平均值。它不应该从 0 开始计算。例如,如果在线圈 push_force = 80 和 drawing_force =60 中,它应该计算从 60 到 80 的平均推力
解决方案
尝试这个
SELECT AVG(pushing_force)
FROM drawing d1
WHERE pushing_force > (
SELECT max(drawing_force)
FROM drawing d2
WHERE d1.coil_id = d2.coil_id
)
GROUP BY coil_id
ORDER BY coil_id
类似的方法,但可能更快,看起来像
SELECT AVG(d1.pushing_force)
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
推荐阅读
- java - Register.php 没有响应?
- azure - 使用 Azure 静态网站,是否可以确定访问资源的次数?
- php - 按当前类别显示 Woocommerce 畅销书
- manifest - 如何使用 manifest.yml 在 cloudfoundry 上删除默认路由
- javascript - 单击时将轮播项目移动到轮播中间(JavaScript)
- ruby-on-rails - How to store numeric values for weight / volume without getting float rounding errors and convert between units (g > kg)?
- angular - 在 Chrome 开发工具中观看的表达式未显示值
- hdl - 有符号二进制数乘法-芯片HDL代码
- java - 无限while循环,而AsyncTask没有完成
- c++ - 在这里使用删除运算符是否正确我很困惑