使用 MySQL 聚合函数从分组数据中检索第一条和最后一条记录
在 MySQL 中处理分组数据时,可能需要访问每组中的第一个和最后一个记录。例如,考虑以下查询:
SELECT MIN(low_price), MAX(high_price), open, close FROM symbols WHERE date BETWEEN(.. ..) GROUP BY YEARWEEK(date)
此查询检索一年中每周的最低低价、最高最高价、开盘价和收盘价。但是,如果目标是获取每组的第一条和最后一条记录,则上述查询是不够的。
解决方案
要实现这一点,可以利用GROUP_CONCAT 和 SUBSTRING_INDEX 函数。以下查询修改原始查询以包含第一个和最后一个开盘价的列:
SELECT MIN(low_price), MAX(high_price), 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 FROM symbols WHERE date BETWEEN(.. ..) GROUP BY YEARWEEK(date)
说明
通过使用这些函数,查询可以有效地检索每组的首次开盘价和最后收盘价。这种方法避免了对多个子查询的需要,并提供了用于检索所需数据的高性能解决方案。
以上是如何从 MySQL 分组数据中检索第一条和最后一条记录?的详细内容。更多信息请关注PHP中文网其他相关文章!