在我的数据库中,每个查询都可以有许多与之相关联的预订。每次订票都会有一些与订票相关的人(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”,那么它将不会返回一个数字。
最佳答案
不能这样使用两个聚合函数,可以改为:
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;
因此,内部查询将为每个查询提供max
pax
。然后,在外部查询中,您可以使用SUM
获得总和。