在我的数据库中,每个查询都可以有许多与之相关联的预订。每次订票都会有一些与订票相关的人(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;

因此,内部查询将为每个查询提供maxpax。然后,在外部查询中,您可以使用SUM获得总和。

10-08 02:05