1
I는 다음과 같습니다 데이터 집합 도착에 시간 간격에 :그룹 마지막으로 삽입 된 기록
localDateTime |bid
--------------------|--------
2017-09-17 15:35:05 |3085
2017-09-17 15:35:54 |3100
2017-09-17 15:37:05 |3100.2
2017-09-17 15:38:06 |3101.6
etc..
나는 시간 필드에 의해 그룹이 원하는 각 시간 간격의 MAX (openBid)을 얻고 있습니다를 마지막 5 간격 (이 예에서는 5 분).
SELECT
MIN(localDateTime) startTime
,MAX(bid) maxOpenBid
,COUNT(*) countRecords
FROM
Ticker
GROUP BY
UNIX_TIMESTAMP(localDateTime) DIV 300
ORDER BY ID DESC
LIMIT 5
이것은 folowing 결과를 제공합니다 : :이 쿼리를 사용
startTime |maxOpenBid |countRecords
--------------------|-----------|------------
2017-09-20 10:50:03 |3306.9 |3
2017-09-20 10:45:03 |3305 |5
2017-09-20 10:40:04 |3304.9 |5
2017-09-20 10:35:04 |3306 |5
2017-09-20 10:30:03 |3303.2 |5
나는이 결과 집합의 첫 번째 레코드의 카운트가 시간이 지남에 따라 1 ~ 5까지 카운트한다는 것이다 문제 . 이 예제에서는 3입니다. 내 쿼리가 모든 시간 간격에 대해 동일한 양의 레코드를 갖기를 원합니다. 문제는 GROUP BY가 시간의 첫 번째 레코드에서 시작된다는 것입니다. ORDER BY DESC를하고 있기 때문에이 세트의 마지막 레코드에서 시작하고 싶습니다.
내 개인적인 접근 방식은 타임 스탬프 (서비스 문제로 인해 누락 된 항목이 누락 될 수 있음)를 사용하는 것을 잊어 버리고 연속적인 자동 증가 숫자로 전환하는 것입니다. 게으른 경우 자동 증가 기본 키 (서버가 점프 1 씩 증가하도록 설정되어 있으면 MySQL 클러스터가이 접근 방식을 깨뜨릴 것입니다.) GROUP BY FLOOR (pk_column/5) – wally
수행 할 수 있습니다. 내 접근 방식, 첫 번째 레코드를 "수정"하는 오프셋을 제공해야 할 수도 있습니다. 예를 들어 'GROUP BY FLOOR ((pk_column + 4)/5)' – wally
그 생각을하지 않았다, 좋은 제안, 고마워! – NCS