[英]mysql - select count multiple tables, group by week, custom date range
例如,我有2个表和一个日期范围(2015年12月1日至2016年1月10日)。
第一张桌子:USERS
id (int) date (datetime)
1 3-dec-2015
2 4-dec-2015
3 19-dec-2015
4 20-dec-2015
5 21-dec-2015
6 29-dec-2015
7 30-dec-2015
第二张桌子:BIRTHDAYS
id (int) date (datetime)
1 6-dec-2015
2 8-dec-2015
3 9-dec-2015
4 17-dec-2015
5 28-dec-2015
查询后的结果应为以下内容:
[0] 1st week => 2 users, 1 birthday
[1] 2nd week => 0 users, 2 birthday
[2] 3ed week => 1 users, 1 birthday
[3] 4th week => 1 users, 0 birthday
[4] 5th week => 2 users, 1 birthday
[5] 6th week => 0 users, 0 birthday
任何想法如何达到这个结果或接近? 如果需要,我可以使用和PHP。
我将从以下内容开始:
select ((week(dateb) - week('2015-12-01')) + 1) as week_number, count(a.dateb) as userdates
from users as a
where dateb between '2015-12-01' and '2016-01-01'
group by week(dateb)
order by week(dateb);
和
select ((week(dateb2) - week('2015-12-01')) + 1) as week_number, count(dateb2) as birthdays
from birthdays
where dateb2 between '2015-12-01' and '2016-01-01'
group by week(dateb2)
order by week(dateb2);
演示, http: //sqlfiddle.com/#!9 / c83cb / 21
从那里,您可以摆弄PHP的输出。
还要注意,使用这种方法只会返回包含填充数据的行。 因此,您应该检查迭代过程,以确保每行都增加1。
例如,对于users
当您从第1周到第3周时,应该输出week 2 = 0
; 或者您想显示它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.