"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > MySQL에서 그룹화된 데이터의 첫 번째 및 마지막 레코드를 효율적으로 검색하는 방법은 무엇입니까?

MySQL에서 그룹화된 데이터의 첫 번째 및 마지막 레코드를 효율적으로 검색하는 방법은 무엇입니까?

2024년 11월 16일에 게시됨
검색:956

How to Efficiently Retrieve First and Last Records of Grouped Data in MySQL?

MySQL에서 집계 함수를 사용하여 그룹화된 데이터의 첫 번째 및 마지막 레코드 검색

MySQL에서 집계 함수를 사용하여 그룹화된 레코드에서 데이터를 가져올 때, 그룹의 첫 번째 및 마지막 레코드를 검색하는 것은 어려울 수 있습니다. 여러 쿼리로 이를 수행할 수 있지만 큰 테이블의 경우 비효율적일 수 있습니다.

이 프로세스를 최적화하기 위해 MySQL은 GROUP_CONCATSUBSTRING_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

작동 방식:

  • GROUP_CONCAT는 모든 시가 또는 종가 값을 단일 문자열로 연결합니다. datetime 열.
  • SUBSTRING_INDEX는 연결된 문자열을 쉼표(',')로 분할하여 첫 번째 값과 마지막 값을 추출합니다. '1' 인수는 첫 번째 또는 마지막 발생을 나타냅니다.

예:

다음 쿼리를 고려하세요.

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