MySQL使用max()时无效使用组函数

时间:2017-12-22 13:29:15

标签: mysql

在我的数据库中,每个查询都可以有多个与之相关的预订。每个预订将有许多预订相关的人(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'然后它不会返回一个数字。

1 个答案:

答案 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获得总和。