在我的数据库中,每个查询都可以有多个与之相关的预订。每个预订将有许多预订相关的人(pax)。我想为每个查询总结每个查询的pax的最大值(例如,如果有3个预订,pax = 3,3,4,那么我想使用4)用于每个查询。目前我有这个:
SELECT SUM(MAX(b.pax)) AS `pax`
FROM enquiry e
LEFT JOIN booking b ON b.enquiry_id = e.id
但它返回错误'无效使用群组功能'。我究竟做错了什么?如果我不使用' max'然后它将所有pax值相加而不是每个查询只有1个,如果我使用' GROUP BY e.id'然后它不会返回一个数字。
答案 0 :(得分:4)
你不能以这种方式使用两个聚合函数,你可以这样做:
SELECT SUM(MaxPax) AS Total
FROM
(
SELECT MAX(b.pax) AS MaxPax
FROM enquiry e
LEFT JOIN booking b ON b.enquiry_id = e.id
GROUP BY b.enquiry_id
) AS t;
因此,内部查询将为每个查询提供最大pax
。然后,在外部查询中,您可以使用SUM
获得总和。