我在数据库中有两个表。一个命名为公司,另一个命名为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()?我尝试了一些方法,但是没有用。
我从布尔列上的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))
比旧的干净。