2012-04-17 5 views
0

아래 샘플 데이터가 주어지면 time의 매분마다 하나의 행을 가져올 수 있습니까? 이것은 내가 지금까지있어 무엇mutilple 조건을 가진 시간별 MySQL 그룹

ID Rate Flag  time 
1 68.65 null  2012-04-18 10.00.01 
2 68.63 null  2012-04-18 10.00.11 
3 68.68 null  2012-04-18 10.00.21 
4 68.70 null  2012-04-18 10.00.31 
5 68.71 null  2012-04-18 10.00.41 
6 68.60 null  2012-04-18 10.00.51 
7 68.64 null  2012-04-18 10.01.01 
8 68.75 null  2012-04-18 10.01.11 
9 68.72 1   2012-04-18 10.01.21 
10 68.63 null  2012-04-18 10.01.31 
11 68.62 null  2012-04-18 10.01.41 
12 68.60 null  2012-04-18 10.01.51 

Expected Output 
1 68.65 null  2012-04-18 10.00.01 
9 68.72 1   2012-04-18 10.01.21 

SELECT IF (`Flag` IS NOT NULL, 
      [fetch flag row], 
      [otherwise fetch one row from that minute]); 

샘플 데이터 :

나는 다음과 같은 조건을 만들 필요가에 대한

SELECT FLAG as signal, DATE_FORMAT(TIME, '%Y-%m-%d %H:%i') as time, RATE as rate 
     FROM RATES WHERE (FLAG!='' || (DATE_FORMAT(TIME, '%s')>50)) 
    GROUP BY time 
    ORDER BY time DESC,FLAG DESC; 

감사를 당신의 도움.

Nikhil은

귀하의 문제로 설명 될 수
+0

SELECT FLAG (TIME '% Y- % M- % D % H % I') 가격 WHERE FROM 레이트 시간 레이트 (FLAG GROUP BY 시간 ORDER BY 시간 DESC, FLAG DESC – user1340004

답변

0

: 둘 이상의 행이 동일한 플래그가있는 경우 같은 분으로 그룹화 된 행의 모든 ​​세트에 최대 플래그 행을 찾기는 어떤 선택합니다. 그래서 질의는 같아야 : 신호 DATE_FORMAT 같은

SELECT r.id, r.rate, rg.flag, rg.minute 
FROM 
    (SELECT MAX(flag) as flag , DATE_FORMAT(`TIME`, '%Y-%m-%d %H:%i') as minute 
    FROM RATES 
    GROUP BY minute) rg 
JOIN RATES r 
ON r.id =(SELECT ru.id FROM RATES ru 
      WHERE ru.flag <=> rg.flag 
      AND ru.time BETWEEN CONCAT(rg.minute,':00') AND CONCAT(rg.minute,':59') 
      LIMIT 1) 
+0

괜찮 았지만 테이블에 거대한 레코드가 있습니다.이 쿼리는 오래 실행됩니다 (예 : DATE_FORMAT (TIME, '% s')> 50) . – user1340004

+0

테이블에서 열 대신 파생 값을 그룹화하기 때문에 큰 테이블에서 느려질 것이므로 그룹화에 인덱스를 사용할 수 없게됩니다. 전체 시간에 근사 한 시간과 함께 datetime 열을 추가하고 그룹화 및 조인에 사용하면 인덱스를 사용하면 훨씬 빠릅니다. 그러나 정말 거대한 테이블에서는 매분마다 단일 행에 플래그를 지정하는 것이 가장 좋습니다. 지금 정확히 그걸 어떻게 신고하니? 플래그를 수동으로 추가합니까? – piotrm

+0

테이블은 매 5 초마다 행을 업데이트하며 우리는 플래그를 수동으로 설정하지 않습니다. 플래그는 빈번하지 않습니다. 한 시간에 1-2 번 발생할 수 있습니다. – user1340004