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