SQLAlchemy在同一列中减去2个值,由另一个列ID区分

时间:2015-07-31 18:21:05

标签: python sql postgresql sqlalchemy

我希望进行查询,查看表的“读取”列,并返回过去一小时的平均读数与另一列(称为高度)id为1或2的差异。

基本上,将过去一小时内所有读数的平均值设置为高度值1.将过去一小时内所有读数的平均值设置为高度值为2,并减去两者。

如何在sqlalchemy中的一个查询中执行此操作?

1 个答案:

答案 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值的事实。