如何在具有聚合函数的MySQL查询中获取分组记录的第一条记录和最后一条记录?

我正在尝试获取“分组”记录的第一条记录和最后一条记录。

更准确地说,我正在执行这样的查询

SELECT MIN(low_price), MAX(high_price), open, close

FROM symbols

WHERE date BETWEEN(.. ..)

GROUP BY YEARWEEK(date)

但我想获得小组的第一和最后的记录。可以通过执行大量请求来完成,但是我的桌子很大。

是否有使用MySQL的方法(如果可能的话,可以减少处理时间)?

回答:

您要使用GROUP_CONCATSUBSTRING_INDEX

SUBSTRING_INDEX( GROUP_CONCAT(CAST(open AS CHAR) ORDER BY datetime), ',', 1 ) AS open

SUBSTRING_INDEX( GROUP_CONCAT(CAST(close AS CHAR) ORDER BY datetime DESC), ',', 1 ) AS close

这避免了昂贵的子查询,并且我发现对于这个特定问题它通常更有效。

请查阅手册中的两个函数以了解它们的参数,或访问本文,其中包含有关如何在MySQL中进行时间框架转换的示例,以获取更多说明。

以上是 如何在具有聚合函数的MySQL查询中获取分组记录的第一条记录和最后一条记录? 的全部内容, 来源链接: utcz.com/qa/433930.html

回到顶部