我需要在我的模型上添加平均时间戳。我有表达式的查询:
从歌曲中选择to_timestamp(AVG(EXTRACT(epoc from play_at)));
我不知道如何为这样的查询做hybrid_property
部分;是否可以直接使用表达式?
这就是我目前所拥有的:
class Song(db.Model):
...
played_at = db.Column(db.DateTime, server_default=db.func.now(), nullable=False)
...
@hybrid_property
def avg_played(self):
# what to do here?
pass
@avg_played.expression
def avg_played(self):
return db.func.to_timestamp(db.func.avg(db.func.extract(db.text('epoch'), self.played_at)))
但是表达式给出了错误:
sqlalchemy.exc.ProgrammingError:(psycopg2.ProgrammingError)列“song.id”必须出现在GROUP BY子句中或用于聚合函数
我不明白为什么该查询需要group_by
。