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`;
因此,如果我在城市 XI 的日期为 2019/03/02(星期六)、2019/03/03(星期日)有旅行,将返回 X 和 1 次旅行,因为它按周末对日期进行分组。如果它的日期为 2019/03/09、2019/03/10,我将返回 X 城市的名称和 2 次旅行,因为它的日期为 2 和 3 为 1;和 9 和 10 作为另一个旅游。
我所做的查询只计算周六和周日,而不区分不同的星期。
任何想法?
更新
我添加了一个小提琴 Fiddle
期望的结果是
| name | TOURS |
| ----------- | ----- |
| Amatitlan | 0 |
| Guatemala | 3 |
| Villa Nueva | 1 |
解决方案
我添加了
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`;
推荐阅读
- c++ - 模板函数不适用于采用 const ref 的指向成员函数的指针
- java - 如何停止链式方法调用?
- ios - 重用自定义 TableViewCell
- node.js - '/dev/stdin' 或 'process.stdin.fd' 上的 fs.readFileSync() 的区别?
- highcharts - 使 minPointLenght 适用于堆积柱形图中的所有块
- asp.net-mvc - MVC Core 3.0 options.LoginPath - 添加本地化路由参数
- sql - 将带有实体框架的 .Net Core 应用程序发布到 IIS
- oracle - UNION 和 CONCATENATION 运算符在性能方面有什么区别?
- sql-server - 连接池可以同时为多个事务提供相同的连接吗?
- python - 不再满足条件时重置的累积和