2016-06-16 3 views
-4

SQL 쿼리를 만들어야합니다. 그래서, 나는 데이터 link와 함께 당신을 위해 SQL 바이올린을 만듭니다. 모든 태그 == 안쪽에있는 == 1 일자 안쪽에있는 날짜의 차이의 합을해야하는 경우SQL 쿼리를 만드는 방법은 무엇입니까?

CREATE TABLE `passages_table` (
`ID` INT(11) NOT NULL AUTO_INCREMENT, 
`INSIDE` TINYINT(4) NOT NULL DEFAULT '0', 
`TAG` CHAR(50) NOT NULL DEFAULT '0', 
`DATE` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, 
PRIMARY KEY (`ID`) 

)이

I는 TAG 그룹화 기록에 필요한 0

결과이어야 like (예) TAG | INTERVAL (분)
"---"| 40
"---"| 여기 enter image description here

+0

나는 차이 –

+0

을 시도 http://www.w3schools.com/sql/을 날짜의 차이를 산출하는 기능을 가진 func_datediff_mysql.asp –

+0

mysql을의 합계를 얻는 방법을 이해하지 못하는 당신이 –

답변

0

1450

는 그래서 난 같은 태그 큰 가장 작은 ID를 찾기 위해 여기에 관계를 추가 페어링 얼마나 내 시도는 정확히 모르겠의 내부 0

얻으려면 쌍 = T1과 T2를 조인합니다. 여기서 조건은 아래 쿼리에서 볼 수 있습니다.

SELECT TAG,SUM(secs_diff)/60 as `INTERVAL` 
FROM 
    (SELECT T1.INSIDE,T1.TAG,T1.DATE, 
     T2.INSIDE INSIDE2,T2.TAG TAG2,T2.DATE DATE2, 
     TIME_TO_SEC(T2.DATE) - TIME_TO_SEC(T1.DATE) as secs_diff   
    FROM passages_table T1 
    INNER JOIN passages_table T2 ON 
    T1.TAG = T2.TAG AND T1.INSIDE = 1 AND T2.INSIDE = 0 
    AND T2.ID > T1.ID 
    WHERE NOT EXISTS (SELECT 1 FROM passages_table T3 
        WHERE T3.ID > T1.ID AND T3.ID < T2.ID AND T3.TAG = T1.TAG) 
)T 
GROUP BY TAG 

http://sqlfiddle.com/#!9/b82e09/10

관련 문제