![](/img/trans.png)
[英]How to return each week data as array in mysql query grouped by week?
[英]MySQL Query to return data grouped by first day of the week
我有一个订阅表,其中包含 id、date、subscription_id 列。 现在,我想要一个查询返回按一周的第一天(星期日)每周分组的总订阅数(计数),如下所示; 订阅表;
ID | 客户 | sub_id | 日期 |
---|---|---|---|
1 | 约翰 | 100 | 2022 年 8 月 5 日 |
2 | 詹姆士 | 101 | 2022 年 9 月 5 日 |
3 | 简 | 102 | 2022 年 9 月 5 日 |
4 | 安妮 | 103 | 2022 年 11 月 5 日 |
5 | 麦克风 | 104 | 2022 年 5 月 17 日 |
6 | 詹姆士 | 105 | 19/05/2022 |
7 | 安迪 | 106 | 22/05/2022 |
8 | 溶胶 | 107 | 23/05/2022 |
9 | 约翰 | 108 | 23/05/2022 |
10 | 菲尔 | 109 | 24/05/2022 |
11 | 加里 | 110 | 25/05/2022 |
12 | 戴夫 | 111 | 26/05/2022 |
样本结果;
周开始 | 全部的 |
---|---|
2022 年 8 月 5 日 | 4 |
15/05/2022 | 2 |
22/05/2022 | 6 |
我试过这个;
SELECT WEEK(date) AS Week, COUNT(*) AS Total FROM subscriptions
GROUP BY Week;
但我得到的是周数,而不是我的示例结果中所示的一周的第一天。
我怎样才能达到我在示例结果中指出的内容?
你可以试试
select ANY_VALUE(STR_TO_DATE(CONCAT(DATE_FORMAT(`date`,'%Y%U') ,"0"),'%Y%U%w')) as 'Week Starting',
count(*) as Total
from subscriptions
group by DATE_FORMAT(`date`,'%Y%U');
这是我的建议,假设表是名称subscription
select count(id) `Total`, date_format(created_at, '%Y-%m-%d') `Week Starting`
from subscription where date_format(created_at, '%a') = 'Sun'
group by `Week Starting`
希望它可以提供帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.