【问题标题】:Creating a HAVING COUNT(column) > 2 clause in pyDAL在 pyDAL 中创建 HAVING COUNT(column) > 2 子句
【发布时间】:2017-03-27 06:37:53
【问题描述】:

我有以下 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 BYGROUP BY

db().select(
        db.market.ALL,
        orderby=~db.market.timestamp,
        groupby=db.market.name
    )

但即使在阅读 the section in the web2py book on the HAVING clause 之后,我也不知道如何在有子句中进行计数。

【问题讨论】:

    标签: count having pydal


    【解决方案1】:

    count() 函数返回一个表达式,该表达式既可以用作select 查询中的字段,也可以为查询的having 参数构建一个参数。 web2py 手册中的Grouping and counting 部分对此主题有一些提示。

    以下代码将给出所需的结果。行对象将同时保存market 对象及其各自的行数。

    count = db.market.name.count()
    rows = db().select(
        db.market.ALL,
        count,
        groupby=db.market.name,
        orderby=~db.market.timestamp,
        having=(count > 2)
        )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-04
      • 2019-07-07
      • 2011-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多