我需要创建sql查询。所以,我用数据link为你创建了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`)
)
我需要按照TAG对记录进行分组,其中每个标记应该具有INSIDE == 1的日期和具有INSIDE == 0
的日期之间的差异总和结果应该像(例子)
TAG | INTERVAL(分钟)
“---”| 40个
“---”| 1450
答案 0 :(得分:0)
这是我的尝试不完全确定你如何配对他们所以我在这里添加一个关系来寻找相同标签和内部= 0
更大的最小id要获得对,它将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