내가 그렇게 t.trial
에 응축,MySQL의 비례 부분 집합
t.trial | count(*) | MAX(d.value)
---------------------------------
1 | 80 | 176
2 | 63 | 219
3 | 49 | 109
4 | 67 | 155
하나는 d
의 행이 두 번째를 나타냅니다 반환 그래서
SELECT
t.trial,
count(*),
MAX(d.value)
FROM data d
INNER JOIN trial_info t
ON d.instance_timestamp BETWEEN t.trial_start_timestamp AND t.trial_end_timestamp
GROUP BY t.trial;
같은 쿼리를 가지고는 count(*)
이 수를 반환된다는 것을 의미합니다 각 시도에서 초 단위로 표시되며, MAX(d.value)
은 해당 초에서 관찰 된 최대 값입니다.
질문 : 어떻게 깍 만에 결과가 각 시험 그 시간의 MAX 값의 중간 50 %를 반환 할 수 있습니다? 나는 시험 시간의 처음 25 %와 마지막 25 %를 버리고 싶다. 내 하위 쿼리 기술이 너무 뜨겁지 않습니다 ...
여기까지 내 생각입니다. computedValue
이 고정 숫자로 설정되면이 조인을 대체 할 수 있습니다. 그러나 computedValue
을 반환 된 행의 백분율 (위의 결과 열 count(*)
에 표시)로 지정합니다.
INNER JOIN trial_info t ON d.instance_timestamp BETWEEN
DATE_ADD(t.trial_start_timestamp, INTERVAL computedValue SECOND) AND
DATE_SUB(t.trial_end_timestamp, INTERVAL computedValue SECOND)
샘플 결과를 제공하십시오. 조회가 계수를 리턴합니다. 따라서 중간 50 %는 '0.5 * 카운트 (*)'입니다. –
샘플 결과가 포함되었습니다. –
데이터 샘플을 제공 할 수 있습니까? 여전히 의미가 없습니다. 't'에서 컬럼의 최대 값을 계산한다면, 이것은'data'와 어떤 관계가 있습니까? –