admin

SQLAlchemy-计数状态为true

sql

我在数据库中有两个表。一个命名为公司,另一个命名为company_map。公司表格如下:

C_ID NAME  Contact
1    a     12334   
2    b     12335
3    c     12336
4    d     12337
5    e     12338

company_map表类似:

M_ID C_ID  STATUS
1     1     True   
2     1     False
3     1     True
4     3     True
5     3     True

我需要计算按C_ID分组的company_map表中STATUS为真的数字。例如,我需要获取C_ID的数量为1,并且其STATUS为true,应该为2。现在我可以获取C_ID的数量,通过使用func.count(company_map.C_ID),它将获得3。如何计算状态==
true()?我尝试了一些方法,但是没有用。


阅读 201

收藏
2021-07-01

共1个答案

admin

我从布尔列上的SQLAlchemyfunc.count)那里得到了主意

.having(func.count(case([(company_map.STATUS, 1)])) < func.count(company_map.C_ID))

如果您的SQLAlchemy是最新版本,则可以使用

.having(func.count(1).filter(company_map.STATUS))

比旧的干净。

2021-07-01