表:Tasks
Column Name | Type |
---|---|
task_id | int |
assignee_id | int |
submit_date | date |
编写一个解决方案来报告:
在周末 (周六,周日) 提交的任务的数量 weekend_cnt,以及
工作日内提交的任务数 working_cnt。
按 任意顺序 返回结果表。
返回结果格式如以下示例所示。
示例 1:
输入:
Tasks 表:
task_id | assignee_id | submit_date |
---|---|---|
1 | 1 | 2022-06-13 |
2 | 6 | 2022-06-14 |
3 | 6 | 2022-06-15 |
4 | 3 | 2022-06-18 |
5 | 5 | 2022-06-19 |
6 | 7 | 2022-06-19 |
输出:
weekend_cnt | working_cnt |
---|---|
3 | 3 |
解释:
Task 1 是在周一提交的。
Task 2 是在周二提交的。
Task 3 是在周三提交的。
Task 4 是在周六提交的。
Task 5 是在周日提交的。
Task 6 是在周日提交的。
3 个任务是在周末提交的。
3 个任务是在工作日提交的。
1、weekday 函数返回给定日期的工作日编号。
注意: 0 = 星期一,1 = 星期二,2 = 星期三,3 = 星期四,4 = 星期五,5 = 星期六,6 = 星期日
2、dayofweek 函数返回给定日期的工作日索引(从 1 到 7 的数字)。
注意: 1 = 星期日,2 = 星期一,3 = 星期二,4 = 星期三,5 = 星期四,6 = 星期五,7 = 星期六
SELECT SUM(weekday(submit_date) = 5 OR weekday(submit_date) = 6) AS weekend_cnt,
SUM(weekday(submit_date) != 5 AND weekday(submit_date) != 6) AS working_cnt
FROM Tasks
第一种
SELECT SUM(dayofweek(submit_date) = 7 OR dayofweek(submit_date) = 1) AS weekend_cnt,
SUM(dayofweek(submit_date) != 7 AND dayofweek(submit_date) != 1) AS working_cnt
FROM Tasks
第一种的简化版
SELECT SUM(dayofweek(submit_date) IN (1, 7)) AS weekend_cnt,
SUM(dayofweek(submit_date) NOT IN (1, 7)) AS working_cnt
FROM Tasks
模仿上面简化版,我的写法也可以改成
SELECT SUM(weekday(submit_date) IN (5, 6)) AS weekend_cnt,
SUM(weekday(submit_date) NOT IN (5, 6)) AS working_cnt
FROM Tasks