我将 peewee2.1 与 python3.3 和 sqlite3.7 数据库一起使用。
我想执行某些 SELECT 查询,其中:
- 我首先选择一些聚合(计数,总和),按一些 id 列分组;然后
- 然后,我从 (1) 的结果中进行选择,对其聚合进行聚合。具体来说,我想计算 (1) 中具有每个聚合值的行数。
我的数据库有一个“事件”表,每个事件有 1 条记录,还有一个“票”表,每个事件有 1..N 个票。每个工单记录都包含事件的 id 作为外键。每张票还包含一个“座位”列,指定购买的座位数。(“门票”实际上最好被认为是在活动中购买一个或多个座位的交易。)
以下是此类工作 SQLite 查询的两个示例,它们为我提供了所需的结果:
SELECT ev_tix, count(1) AS ev_tix_n FROM
(SELECT count(1) AS ev_tix FROM ticket GROUP BY event_id)
GROUP BY ev_tix
SELECT seat_tot, count(1) AS seat_tot_n FROM
(SELECT sum(seats) AS seat_tot FROM ticket GROUP BY event_id)
GROUP BY seat_tot
但是使用 Peewee,我不知道在指定外部查询时如何选择内部查询的聚合(计数或总和)。我当然可以为该聚合指定一个别名,但似乎我不能在外部查询中使用该别名。
我知道 Peewee 有一种执行“原始”SQL 查询的机制,并且我已经成功地使用了这种解决方法。但我想了解这些查询是否/如何直接使用 Peewee 完成。