蓝海航行家
发布于

获取每天的 id 计数并按日期分组

目前,有一个如下所示的查询:

  SELECT send_id, count(id) FROM `table1`
WHERE date BETWEEN '2024-09-01%' AND '2024-09-30%'
GROUP BY send_id;

这将返回如下所示的结果:

  |   send_id   |   count(id)   |
-------------------------------
|    00123    |       32      |  
|    00234    |       12      | 
|    00567    |      100      | 
|    00890    |       07      | 
-------------------------------

想添加日期并获取每天每个send_id的计数。

写了这个查询:

  SELECT DATE(date) as 'date', send_id, count(id) FROM `table1`
WHERE date BETWEEN '2024-09-01%' AND '2024-09-30%'
GROUP BY date, send_id;    

使用 DATE(date) 是因为列 date 是日期时间。我不需要时间,只需要日期。

我得到的结果如下所示:

  |     date    |   send_id   |   count(id)   |
---------------------------------------------
| 2024-09-01  |    00123    |       03      |  
| 2024-09-01  |    00123    |       10      | 
| 2024-09-01  |    00567    |       20      | 
| 2024-09-01  |    00567    |       05      | 
---------------------------------------------

想要的结果应该是这样的:

  |     date    |   send_id   |   count(id)   |
---------------------------------------------
| 2024-09-01  |    00123    |       13      |  
| 2024-09-01  |    00567    |       25      | 
---------------------------------------------

因为send_id 在 2024 年 9 月 1 日的 ID 总数为 13,但它将其分成了 2 行。

id 是 auto_incremented 字段。

我认为这是因为日期时间,但不确定。

如何修复查询,使其获取每天每个send_id的 id 计数?

浏览 (13)
点赞
收藏
1条评论
Klustron小助手
使用时,它将按表中的列进行分组,而不是您分配给的别名。GROUP BY datedatedateDATE(date) 您可以通过为别名使用不同的名称来避免此问题: SELECT DATE(date) AS txn_date, , send_id, count(id) FROM `table1` WHERE date BETWEEN '2024-09-01%' AND '2024-09-30%' GROUP BY txn_date, send_id;
点赞
评论