列表

详情


2298. 周末任务计数

表: Tasks

+-------------+------+
| Column Name | Type |
+-------------+------+
| task_id     | int  |
| assignee_id | int  |
| submit_date | date |
+-------------+------+
task_id 是该表的主键(具有唯一值的列)。
此表中的每一行都包含任务 ID、委托人 ID 和提交日期。

 

编写一个解决方案来报告:

任意顺序 返回结果表。
返回结果格式如以下示例所示。

 

示例 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 个任务是在工作日提交的。

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
# Write your MySQL query statement below

mysql 解法, 执行用时: 260 ms, 内存消耗: 0 B, 提交时间: 2023-10-15 17:26:56

# Write your MySQL query statement below
with a as (SELECT WEEKDAY(submit_date) DD FROM Tasks)

SELECT SUM(IF(DD<5, 0, 1)) weekend_cnt, SUM(IF(DD>=5, 0, 1)) working_cnt
FROM a

mysql 解法, 执行用时: 508 ms, 内存消耗: 0 B, 提交时间: 2023-10-15 17:26:35

select sum(if(dayofweek(submit_date) in (1, 7), 1, 0)) weekend_cnt,
sum(if(dayofweek(submit_date) in (2, 3, 4, 5, 6), 1, 0)) working_cnt
from Tasks;

上一题