0
A
回答
0
SELECT A.*,
DATEDIFF(second,B.firstloginonthatday,B.lastlogoutonthatday) AS time_elapsed
FROM YourTable A
INNER JOIN
( SELECT Z.USERID,
CONVERT(DATE,Z.DATE_TIME) AS ONLYDATE,
MIN(Z.DATE_TIME) AS firstloginonthatday,
MAX(Z.DATE_TIME) AS lastlogoutonthatday
FROM
(
SELECT *,
ROW_NUMBER()
OVER
(PARTITION BY USERID,CONVERT(DATE,DATE_TIME) ORDER BY CASE WHEN action = 'logout' THEN DATE_TIME
ELSE NULL END
) AS lastlogout_rn,
ROW_NUMBER()
OVER
(PARTITION BY USERID,CONVERT(DATE,DATE_TIME) ORDER BY CASE WHEN action = 'login' THEN DATE_TIME
ELSE NULL END
) AS firstlogin_rn
FROM Yourtable
) Z
WHERE Z.lastlogout_rn = 1 OR Z.firstlogin_rn = 1
GROUP BY Z.USERID,CONVERT(DATE,Z.DATE_TIME)
) B
ON A.USERID = B.USERID
AND CONVERT(DATE,A.DATE_TIME) = B.ONLYDATE;
+0
你好,感谢你的代码,非常感谢。由于某些原因,20170418的时间计算不正确,我假设这可能是由于多次登录和退出导致的,因为20170419是正确的? –
相关问题
- 1. SQL 2014,SSRS - 使用参数计算时间给出错误和错误计算
- 2. SQL持续时间计算
- 3. SQL查询,计算时间
- 4. PL/SQL时间段计算
- 5. 计算时间差指数
- 6. 时间戳计算函数
- 7. PHP时间数学计算
- 8. 计算时间
- 9. 时间计算
- 10. 时间计算
- 11. 计算时间
- 12. 计时器 - 计算时间
- 13. Oracle SQL:动态时间表计算
- 14. 计算SQL查询的执行时间?
- 15. T-SQL计算平均时间
- 16. oracle sql解决计算的时间
- 17. Linq To Sql按时间括号计算
- 18. 计算SQL Server中的时间差异?
- 19. SQL:高效计算花费的时间
- 20. 在SQL中计算营业时间
- 21. SQL Server中的计算时间列
- 22. 创建LINQ to SQL来计算参数
- 23. 时间戳和时间间隔:NUMTOYMINTERVAL SYSTDATE计算SQL查询
- 24. 时间间隔计算在时间序列上使用SQL
- 25. 当满足参数时计算多行的时间
- 26. SQL Server参考计算列
- 27. 计算对数算法的时间
- 28. 时间计算和计数与MySQL
- 29. SQL时区计算
- 30. 计算时间间隔的总秒数
要想从这个社会最好的帮助将是巨大的,如果你能告诉我们,你使用的是什么SQL数据库,分享自己当前的代码,并解释你到目前为止已经试过。 –
我正在使用SQL 2008 R2 –
[T-SQL脚本来计算多行之间的时间差异]的可能重复(http://stackoverflow.com/questions/24518781/t-sql-script-to-calculate-time-difference -between-multiple-rows) –