我在db中有两个表。一个名为company,另一个名为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
我需要计算在company_map表中STATUS为真的数字,按C_ID分组。例如,我需要得到C_ID的数量是1并且其STATUS为真,它应该是2.我现在可以得到C_ID的数量,通过使用func.count(company_map.C_ID),它将得到3.但是如何计算STATUS == true()?我尝试了一些方法,但没有一种方法可以使用。
答案 0 :(得分:2)
我从SQLAlchemy func.count on boolean column获得了想法
.having(func.count(case([(company_map.STATUS, 1)])) < func.count(company_map.C_ID))
如果您的SQLAlchemy是最新版本,可以使用
.having(func.count(1).filter(company_map.STATUS))
比旧的更干净。
答案 1 :(得分:0)
以下内容会有所帮助。
SELECT C_ID, COUNT(C_ID) AS 'Count'
FROM company_map
WHERE STATUS = 'TRUE'
GROUP BY C_ID
ORDER BY C_ID ASC