MySQL统计每周内任意时刻存在的记录数问题求助
MySQL统计每周内任意时刻存在的记录数问题求助
我有一张包含created_at和deleted_at时间戳的表,现在需要统计每一周内任意时刻存在的记录总数,期望得到的结果格式如下:
| week | records |
|---|---|
| 2022-01 | 4 |
| 2022-02 | 5 |
| ... | ... |
核心逻辑是:统计那些创建时间早于当周结束时间,且删除时间晚于当周开始时间的记录。
我试过以下几种SQL写法的变体,但结果总是少统计,实在找不到问题出在哪:
SELECT DATE_FORMAT(created_at, '%Y-%U') AS week, COUNT(*) FROM records WHERE deleted_at > DATE_SUB(deleted_at, INTERVAL (WEEKDAY(deleted_at)+1) DAY) AND created_at < DATE_ADD(created_at, INTERVAL 7 - WEEKDAY(created_at) DAY) GROUP BY week ORDER BY week
如果有人能帮忙找出问题,我会非常感激!
更新:我找到了关于生成日期范围表的相关思路,建议这个问题可以关闭。
备注:内容来源于stack exchange,提问作者Rich Jenks
相关产品推荐
相关产品推荐

