【发布时间】:2018-10-31 11:56:00
【问题描述】:
考虑一个包含 N 列的 postgresql 表。一列包含二项式分类[0 1]。我想按照下一个语法按此字段对数据进行分组(我对 python 使用 psycopg2,对 nodejs 使用 pg):
SELECT dummy_field,
COUNT(*)
FROM __table__
WHERE q_id = '2F5543E89823'
GROUP BY dummy_field
此查询返回例如:[(0, 1606), (1, 6674)] 值。我更改了上述语法,以便仅包含基于CURRENT_TIMESTAMP 的最后两天:
那就是:
...
AND date_field > CURRENT_TIMESTAMP - INTERVAL '2 days'
GROUP BY dummy_field
但是,我想在不同的查询中仅检索基于 ORDER BY date_field DESC LIMIT 1000 的最后 1000 条记录。由于选择字段不包括 date_field 我收到此错误:
列“field.date_field”必须出现在 GROUP BY 子句中或用于聚合函数中
为了避免这个错误,我遵循了这样的语法:
SELECT dummy_field, date_field,
COUNT(*)
FROM __table__
WHERE q_id = '2F5543E89823'
GROUP BY dummy_field, date_field
ORDER BY date_field DESC LIMIT 1000
然而这不是我想要的。我想使用 COUNT(*) 和 GROUP BY dummy_field,当 date_field 以 DESC 方式排序时,只考虑最后 1000 条记录。
是否有其他替代方法来处理此结果?提前致谢。
【问题讨论】:
标签: sql postgresql psycopg2