以下是示例:
SELECT Item.purchase_transaction_id, ItemType.item_type, COUNT(Item.id)
FROM Item GROUP BY Item.purchase_transaction_id, Item.item_type_id
因此,在此查询之后,我想获得行结果的总数量,或者您可以将结果称为COUNT
。我不知道如何用SQL做到这一点但是使用SqlAlchemy我可以这样做
q = db.session.query(Item.purchase_transaction_id, ItemType.item_type,
func.count(Item.id)).group_by(Item.purchase_transaction_id, Item.item_type_id)
并获取count
我只是致电q.count()
,但我猜这个效率不高,因为您先调用查询然后才计算结果。
那么,是否有任何有效的方法可以从COUNT
多列中获取GROUP BY
行。
答案 0 :(得分:0)
一种方法是子查询:
SELECT COUNT(*)
FROM (SELECT Item.purchase_transaction_id, ItemType.item_type, COUNT(Item.id)
FROM Item
GROUP BY Item.purchase_transaction_id, Item.item_type_id
) i;
如果值不是NULL
且基础数据库支持它,那么您也可以这样做:
SELECT COUNT(DISTINCT Item.purchase_transaction_id, ItemType.item_type)
FROM Item;
(否则,您可以将值连接在一起并仍然使用COUNT(DISTINCT)
。)