首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Mysql按周末日期分组

Mysql按周末日期分组
EN

Stack Overflow用户
提问于 2019-03-02 04:31:32
回答 2查看 239关注 0票数 0

我有下一个数据库:

我想知道的是这个城市的名称,以及周末的旅游次数。

我试着做这样的事

代码语言:javascript
运行
复制
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为另一次旅游。

我只在周六和周日进行查询,没有区分不同的星期。

有什么想法吗?

更新

我加了一把小提琴小提琴

期望的结果是

代码语言:javascript
运行
复制
| name        | TOURS |
| ----------- | ----- |
| Amatitlan   | 0     |
| Guatemala   | 3     |
| Villa Nueva | 1     |
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-04 21:51:29

我加了

代码语言:javascript
运行
复制
count(distinct week(`tours`.`date`, 1))AS TOURS

和完整查询

代码语言:javascript
运行
复制
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`;

篡改所期望的结果

票数 0
EN

Stack Overflow用户

发布于 2019-03-02 05:15:19

如果我理解正确的话,你只想让你每周数一次,只在周末。

我认为下面是解决办法。如果我错了,请纠正我。

代码语言:javascript
运行
复制
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);
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54955252

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档