有如下一张记录表T20191105,如何查询出每隔15分钟的记录数
T20191105
预期结果如下:
参考答案
解析:
这里主要是分组的这个函数改怎么理解。为了大家看的更加清楚明白,我们把这其中的每个函数都单独拆分开给大家看看
结果如下:
这里最重要的就是第3个函数转换DATEDIFF,它是首先将times的完整时间DATEADD(ss,1,times)减去times的日期部分CONVERT(VARCHAR(10),DATEADD(ss,1,times),最后就得到了时间部分,然后将时间按分钟进行换算,得出一个整数。
我们知道在SQL中整数除以15最后还是整数,会自动直接舍弃小数部分。
其实关键就是要舍弃这个小数部分,这样我们再乘以15就可以得到times最接近的15分钟是那一刻了。再将这个时刻对应的整数转换成时间类型,就是第5部我们得到内容了。
解析:
这里是利用对时间格式化后进行分组求个数,其中子查询里面是解题的关键,先将带时间的日期通过UNIX_TIMESTAMP格式化成秒,然后除以900秒后用FLOOR向下取整得到一个整数,这样就可以得到一个按15分钟分组的时间序列,再通过FROM_UNIXTIME将unit_time转化成带时间的日期格式即可实现题目中的要求。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/22109.html