我希望进行查询,查看表的“读取”列,并返回过去一小时的平均读数与另一列(称为高度)id为1或2的差异。
基本上,将过去一小时内所有读数的平均值设置为高度值1.将过去一小时内所有读数的平均值设置为高度值为2,并减去两者。
如何在sqlalchemy中的一个查询中执行此操作?
答案 0 :(得分:0)
可能不是你想要的,因为我不知道sqlalchemy,但是要实现的原始Postgresql SQL查询可能
SELECT
AVG(CASE WHEN height = 2 THEN reading ELSE NULL END) -
AVG(CASE WHEN height = 1 THEN reading ELSE NULL END)
FROM table
WHERE reading_time >= (CURRENT_TIMESTAMP - INTERVAL '1 HOUR')
这利用了从AVG聚合函数中排除NULL值的事实。