Извлечение первой и последней записей сгруппированных данных с помощью агрегатных функций в MySQL
В MySQL при извлечении данных из сгруппированных записей с помощью агрегатных функций, может быть сложно получить первую и последнюю записи группы. Хотя это можно сделать с помощью нескольких запросов, для больших таблиц это может быть неэффективно.
Чтобы оптимизировать этот процесс, MySQL предлагает более эффективное решение, используя функции GROUP_CONCAT и SUBSTRING_INDEX .
Используя GROUP_CONCAT и SUBSTRING_INDEX
Используя эти функции вместе, вы можете объединить значения из группы, а затем извлечь первое и последнее значения с помощью SUBSTRING_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
Как это работает:
Пример:
Рассмотрим следующий запрос:
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)
Этот запрос эффективно извлекает первую (открытую) и последнюю (закрытую) записи для каждой группы, минимизируя время обработки больших таблиц.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3