Mysql 周末按日期分组

Mysql 周末按日期分组,mysql,Mysql,我有下一个数据库: 我想知道的是这个城市的名字,以及按周末分组的旅游人数 我试着做这样的事情 select `cities`.`name`, SUM( CASE DAYOFWEEK(DATE(date)) WHEN 7 OR 1 THEN 1 ELSE 0 END)AS TOURS from `cities` left join `tours` on `cities`.`id` = `tours`.`city_id` group by `cities`.`name`; 因此,如果我在201

我有下一个数据库:

我想知道的是这个城市的名字,以及按周末分组的旅游人数

我试着做这样的事情

select `cities`.`name`, 
SUM( CASE DAYOFWEEK(DATE(date)) WHEN 7 OR 1 THEN 1 ELSE 0 END)AS TOURS
from `cities` 
left join `tours` on `cities`.`id` = `tours`.`city_id`
group by `cities`.`name`;
因此,如果我在2019/03/02星期六、2019/03/03星期天在X市有旅行团,我会返回X和1旅行团,因为它在周末将日期分组。如果它的日期是2019/03/09、2019/03/10,我会返回城市X和2 tours的名称,因为它的日期是2和3,作为1;9号和10号是另一个巡演

我所做的查询只计算周六和周日,没有区分不同的周

有什么想法吗

使现代化 我加了一把小提琴

期望的结果是

| name        | TOURS |
| ----------- | ----- |
| Amatitlan   | 0     |
| Guatemala   | 3     |
| Villa Nueva | 1     |

如果我没弄错的话,你只想按不同的星期计算周末的旅行次数

我认为以下是解决方案。如果我错了,请纠正我

select `cities`.`name`, 
SUM( CASE DAYOFWEEK(DATE(date)) WHEN 7 OR 1 THEN 1 ELSE 0 END)AS TOURS,
WEEKS(date),
from `cities` 
left join `tours` on `cities`.`id` = `tours`.`city_id`
group by `cities`.`name`,WEEKS(date);
我补充说

count(distinct week(`tours`.`date`, 1))AS TOURS
并完成查询

select `cities`.`name`, 
count(distinct week(`tours`.`date`, 1))AS TOURS
from `cities` 
left join `tours` on `cities`.`id` = `tours`.`city_id`
group by `cities`.`name`;

您能提供一些示例数据和预期结果吗?WEEKS不是有效的MySQL函数。我想你可能想要一周