ROW_NUMBER()를 사용하면 비교적 쉽게 처리 할 수 있습니다.
SELECT
*
FROM
(
SELECT
ROW_NUMBER() OVER (ORDER BY a, b, c, d) AS record_id,
*
FROM
yourTable
)
AS data
WHERE
(record_id + 360) % 720 = 0
ROW_NUMBER()
는 모든 데이터를 순차적 식별자 (이 둘 틈이 고유해야하며 안됩니다 id 필드 중요하다)를 제공합니다. 또한 데이터를 원하는 순서를
(ORDER BY a, b, c, d)
으로 정의합니다.
해당 ID를 사용하면 Modulo (종종 %
연산자)를 사용하면 720 번째 레코드, 1440 번째 레코드 등 (720 % 720 = 0이므로) 레코드인지 테스트 할 수 있습니다.
그런 다음 id 값을 360으로 오프셋하면 결과 집합의 시작점을 변경할 수 있습니다.
편집 질문을 다시 읽은 후
, 난 당신이 모든 720번째 기록을하지 않으려는 볼 수 있지만, 균일 (720 개) 기록을 선정했다. 이와 같이
, (SELECT COUNT(*)/720 FROM yourTable)
으로 720
대체 정확히 720 기록 결과를 허용 라운딩 조건을 무시 (SELECT (COUNT(*)/720)/2 FROM yourTable)
EDIT
으로 360
대체. 이를 위해서는 정수가 아닌 값을 사용해야하고 모듈로의 결과는 1보다 작아야합니다.
WHERE
(record_id + (SELECT COUNT(*) FROM yourTable)/1440.0)
%
((SELECT COUNT(*) FROM yourTable)/720.0)
<
1.0
어떤 브랜드의 SQL입니까? ROW_NUMBER()를 사용하면 많은 도움이됩니다. 또한 샘플링 간격이 720이고 정의 된 시작점 ***은 *** 데이터에 순서가 있음을 의미합니다. 따라서 데이터가 어떤 순서로 표시되어야합니까? – MatBailie
ROW_NUMBER() OVER (TransactionDate로 주문) AS RowNumber, –