gpt4 book ai didi

mysql: 奇怪的错误 1111 无效使用分组依据

转载 作者:搜寻专家 更新时间:2023-10-30 22:00:34 24 4
gpt4 key购买 nike

以下是我正在尝试运行的查询。

select location_data.trip_code,sum(max(device_time)-min(device_time)) from location_data,trip_management 
where location_data.source_id=3 and location_data.trip_code=trip_management.trip_code
group by location_data.trip_code

在 trip_managemnet 和 location_data 表中有各种由 trip_code 标识的旅行。这些旅行由一个唯一标识的用户 (source_id=)3 进行。我在这里要做的是对每次旅行的所有时间差求和,然后使用 sec_to_time 函数将其转换为 hh:mm:ss 以显示用户 3 完成所有旅行所花费的总时间。

上述查询的问题是,一旦我对每次行程的最大和最小 device_time 的差异应用 sum(),它就会生成错误 1111。我负担不起子查询,因为它本身就是一个更大查询中的子查询。

我希望我能很好地解释这个问题。

最佳答案

这里的问题是您试图在聚合 MAX(),MIN() 上应用聚合 SUM(),但实际上这两个级别都在运行在不同的群体上。内部组对 location_data.trip_code 进行分组,外部组对其结果进行分组。您需要将其包装在子查询中:

SELECT
trip_code,
/* Outer query sums the inner aggregates */
SUM(max_time - min_time) AS time_sum
FROM (
SELECT
location_data.trip_code,
/* Inner aggregates return the max & min times only */
max(device_time) AS max_time,
min(device_time) AS min_time
FROM
location_data,
INNER JOIN trip_management ON location_data.trip_code = trip_management.trip_code
WHERE
location_data.source_id=3
GROUP BY location_data.trip_code
) first_group
GROUP BY trip_code

我还将隐式连接替换为显式 INNER JOIN,这是当今首选的语法。

关于mysql: 奇怪的错误 1111 无效使用分组依据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16318331/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com