gpt4 book ai didi

MYSQL 分组依据值 > 0

转载 作者:行者123 更新时间:2023-11-29 06:37:21 25 4
gpt4 key购买 nike

我一直在处理这个查询,它按预期工作,因为我按 p.ID 分组(因为没有分组的话会有多个 p.ID 值。),所以每个 p.ID 显示一个输出。根据 p.ID,我有时会得到一个不是最快的 e.alternateEventDurationInMilliseconds 值。

有没有办法我仍然可以使用 GROUP BY p.ID,但也可以添加一个检查来获取最小 e.alternateEventDurationInMilliseconds,只要持续时间仍然 > 0?否则,默认情况下我会得到一个大于 0 的随机值,但我想专门获取大于 0 的最小持续时间,每个 p.ID 仅一行。

谢谢! :)

SELECT
p.ID,
e.personaId,
e.EVENTID,
e.alternateEventDurationInMilliseconds
FROM
EVENT_DATA e
INNER JOIN
PERSONA p ON e.personaId = p.ID
WHERE
e.EVENTID = '43' AND e.alternateEventDurationInMilliseconds > '0'
GROUP BY
p.ID
ORDER BY
e.`alternateEventDurationInMilliseconds` ASC

最佳答案

您必须使用MIN()聚合函数在分组后选择每个组的最小值(特定列的)。另外,如果您仅从表中检索 ID,但此 ID 已经是表 EVENT_DATA 的一部分,那么为什么需要联接表 PERSONA >(在 personaId 列上)。您可能需要的查询是这样的:

SELECT
p.ID,
MIN(e.personaId), -- This could be replaced by ANY_VALUE(e.personaId).
MIN(e.EVENTID), -- This could be replaced by ANY_VALUE(e.EVENTID).
MIN(e.alternateEventDurationInMilliseconds) AS minAlternateEventDurationInMilliseconds
FROM
EVENT_DATA e
INNER JOIN
PERSONA p ON e.personaId = p.ID
WHERE
e.EVENTID = '43' AND e.alternateEventDurationInMilliseconds > 0
GROUP BY
p.ID
ORDER BY
minAlternateEventDurationInMilliseconds ASC

如果您不需要表 PERSONA 中除 ID 之外的其他数据,则之前的查询可以简化为:

SELECT
MIN(e.personaId), -- This could be replaced by ANY_VALUE(e.personaId).
MIN(e.EVENTID), -- This could be replaced by ANY_VALUE(e.EVENTID).
MIN(e.alternateEventDurationInMilliseconds) AS minAlternateEventDurationInMilliseconds
FROM
EVENT_DATA e
WHERE
e.EVENTID = '43' AND e.alternateEventDurationInMilliseconds > 0
GROUP BY
e.personaId
ORDER BY
minAlternateEventDurationInMilliseconds ASC

关于MYSQL 分组依据值 > 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53201777/

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