我有下一个数据库:
我想知道的是这个城市的名称,以及周末的旅游次数。
我试着做这样的事
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次旅游的名字交回,因为它的日期是2和3为1,9和10为另一次旅游。
我只在周六和周日进行查询,没有区分不同的星期。
有什么想法吗?
更新
我加了一把小提琴小提琴
期望的结果是
| name | TOURS |
| ----------- | ----- |
| Amatitlan | 0 |
| Guatemala | 3 |
| Villa Nueva | 1 |
发布于 2019-03-04 21:51:29
我加了
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`;
发布于 2019-03-02 05:15:19
如果我理解正确的话,你只想让你每周数一次,只在周末。
我认为下面是解决办法。如果我错了,请纠正我。
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);
https://stackoverflow.com/questions/54955252
复制相似问题