我有以下pyDAL表:
market = db.define_table(
'market',
Field('name'),
Field('ask', type='double'),
Field('timestamp', type='datetime', default=datetime.now)
)我想使用表达式语言执行以下SQL:
SELECT * FROM market
GROUP BY name
ORDER BY timestamp DESCENDING
HAVING COUNT(name) > 1我知道如何做ORDER BY和GROUP BY
db().select(
db.market.ALL,
orderby=~db.market.timestamp,
groupby=db.market.name
)但是,即使在阅读了子句之后,我也不知道如何在reading子句中进行计数。
发布于 2016-11-23 15:33:53
count()函数返回一个表达式,该表达式既可用作select查询中的字段,也可用于为查询的having参数构建参数。分组计数手册中的web2py部分有一些关于这个主题的提示。
下面的代码将给出所需的结果。行对象将同时保存market对象及其各自的行计数。
count = db.market.name.count()
rows = db().select(
db.market.ALL,
count,
groupby=db.market.name,
orderby=~db.market.timestamp,
having=(count > 2)
)https://stackoverflow.com/questions/40574954
复制相似问题