如何基于日期范围统计并分组用户与设备的提交记录
解决设备分配时间段内的记录统计问题
原代码的核心问题是NULL值的判断方式错误:SQL中不能用=来判断NULL,必须使用IS NULL,这就是导致Delink_Date为NULL时统计异常的原因。
修正后的SQL代码如下:
SELECT W.ID, COUNT(*) as COUNT FROM W WHERE W.Link_Date < W.date_time AND (W.Delink_Date IS NULL OR W.Delink_Date > W.date_time) GROUP BY W.ID
逻辑说明
W.Link_Date < W.date_time:确保提交日期在设备分配给该用户的起始时间之后W.Delink_Date IS NULL:处理设备尚未解除分配(仍属于该用户)的情况W.Delink_Date > W.date_time:确保提交日期在设备解除分配的时间之前
这样就能准确统计每个用户ID对应的、在设备分配时间段内的记录次数。
内容的提问来源于stack exchange,提问作者Alexander The Great
相关产品推荐
相关产品推荐

