排名
用户解题统计
过去一年提交了
勋章 ①金银铜:在竞赛中获得第一二三名;②好习惯:自然月10天提交;③里程碑:解决1/2/5/10/20/50/100/200题;④每周打卡挑战:完成每周5题,每年1月1日清零。
错题集 数据思维刷题中答错的题目
| 模块 | 知识点 | 题目 | 你的答案 | 正确答案 | 操作 |
|---|---|---|---|---|---|
| 暂无错题,继续保持! | |||||
收藏
| 收藏日期 | 题目名称 | 解决状态 |
|---|---|---|
| 没有收藏的题目。 | ||
评论笔记
| 评论日期 | 题目名称 | 评论内容 | 站长评论 |
|---|---|---|---|
| 没有评论过的题目。 | |||
提交记录
| 提交日期 | 题目名称 | 提交代码 |
|---|---|---|
| 2026-04-06 | 财源广进:开除摸鱼的员工  |
SELECT e.id AS employee_id, COALESCE(a.attendance_score, 0) + COALESCE(c.compensation_score, 0) + COALESCE(w.walk_score, 0) + COALESCE(f.doc_score, 0) AS score FROM employees e LEFT JOIN ( SELECT employee_id, CASE WHEN emp_avg_hours < overall_avg_hours THEN 1 ELSE 0 END AS attendance_score FROM ( SELECT employee_id, AVG(daily_hours) AS emp_avg_hours, AVG(AVG(daily_hours)) OVER () AS overall_avg_hours FROM ( SELECT employee_id, DATE(punch_time) AS punch_date, CASE WHEN COUNT(punch_time) < 2 THEN 0 ELSE TIMESTAMPDIFF(MINUTE, MIN(punch_time), MAX(punch_time)) / 60 END AS daily_hours FROM attendance WHERE YEAR(punch_time) = 2025 GROUP BY employee_id, DATE(punch_time) ) AS daily GROUP BY employee_id ) AS avg_att ) AS a ON e.id = a.employee_id LEFT JOIN ( SELECT employee_id, CASE WHEN compensation < 10 THEN 3 WHEN compensation < 20 THEN 2 WHEN compensation < 30 THEN 1 ELSE 0 END AS compensation_score FROM ( SELECT id AS employee_id, (FLOOR(TIMESTAMPDIFF(MONTH, STR_TO_DATE(hire_date, '%Y%m%d'), '2026-03-06') / 12) + 1) * (salary / 12) AS compensation FROM employees ) AS comp_calc ) AS c ON e.id = c.employee_id LEFT JOIN ( SELECT employee_id, CASE WHEN total_days > 70 AND days_over_3 > 25 THEN -3 WHEN total_days > 60 THEN -1 ELSE 0 END AS walk_score FROM ( SELECT employee_id, COUNT(DISTINCT walk_date) AS total_days, COUNT(DISTINCT CASE WHEN daily_walk_count > 3 THEN walk_date END) AS days_over_3 FROM ( SELECT employee_id, DATE(timestamp) AS walk_date, COUNT(*) AS daily_walk_count FROM access_control WHERE YEAR(timestamp) = 2025 AND TIME(timestamp) NOT BETWEEN '12:00:00' AND '14:00:00' GROUP BY employee_id, DATE(timestamp) ) AS filtered_walk GROUP BY employee_id ) AS walk_stats ) AS w ON e.id = w.employee_id LEFT JOIN ( SELECT employee_id, CASE WHEN (IF(emp_avg_interaction < overall_avg_interaction, 1, 0) + IF(emp_avg_messages < overall_avg_messages, 1, 0) + IF(emp_avg_documents < overall_avg_documents, 1, 0)) = 3 THEN 3 WHEN (IF(emp_avg_interaction < overall_avg_interaction, 1, 0) + IF(emp_avg_messages < overall_avg_messages, 1, 0) + IF(emp_avg_documents < overall_avg_documents, 1, 0)) = 2 THEN 1 ELSE 0 END AS doc_score FROM ( SELECT employee_id, AVG(daily_interaction) AS emp_avg_interaction, AVG(daily_messages) AS emp_avg_messages, AVG(daily_documents) AS emp_avg_documents, AVG(AVG(daily_interaction)) OVER () AS overall_avg_interaction, AVG(AVG(daily_messages)) OVER () AS overall_avg_messages, AVG(AVG(daily_documents)) OVER () AS overall_avg_documents FROM ( SELECT employee_id, daily_interaction, daily_messages, daily_documents FROM flybook_stats WHERE stat_date >= 20250131 AND YEAR(STR_TO_DATE(stat_date, '%Y%m%d')) = 2025 ) AS filtered_fb GROUP BY employee_id ) AS fb_avg ) AS f ON e.id = f.employee_id ORDER BY score DESC; |
| 2026-04-06 | 财源广进:开除摸鱼的员工  |
SELECT e.id AS employee_id, COALESCE(a.attendance_score, 0) + COALESCE(c.compensation_score, 0) + COALESCE(w.walk_score, 0) + COALESCE(f.doc_score, 0) AS score FROM employees e LEFT JOIN ( SELECT employee_id, CASE WHEN emp_avg_hours < overall_avg_hours THEN 1 ELSE 0 END AS attendance_score FROM ( SELECT employee_id, AVG(daily_hours) AS emp_avg_hours, AVG(AVG(daily_hours)) OVER () AS overall_avg_hours FROM ( SELECT employee_id, DATE(punch_time) AS punch_date, CASE WHEN COUNT(punch_time) < 2 THEN 0 ELSE TIMESTAMPDIFF(MINUTE, MIN(punch_time), MAX(punch_time)) / 60 END AS daily_hours FROM attendance WHERE YEAR(punch_time) = 2025 GROUP BY employee_id, DATE(punch_time) ) AS daily GROUP BY employee_id ) AS avg_att ) AS a ON e.id = a.employee_id LEFT JOIN ( SELECT employee_id, CASE WHEN compensation >= 30 THEN 3 WHEN compensation >= 20 THEN 2 WHEN compensation >= 10 THEN 1 ELSE 0 END AS compensation_score FROM ( SELECT id AS employee_id, (FLOOR(TIMESTAMPDIFF(MONTH, STR_TO_DATE(hire_date, '%Y%m%d'), '2026-03-06') / 12) + 1) * (salary / 12) AS compensation FROM employees ) AS comp_calc ) AS c ON e.id = c.employee_id LEFT JOIN ( SELECT employee_id, CASE WHEN total_days > 70 AND days_over_3 > 25 THEN -3 WHEN total_days > 60 THEN -1 ELSE 0 END AS walk_score FROM ( SELECT employee_id, COUNT(DISTINCT walk_date) AS total_days, COUNT(DISTINCT CASE WHEN daily_walk_count > 3 THEN walk_date END) AS days_over_3 FROM ( SELECT employee_id, DATE(timestamp) AS walk_date, COUNT(*) AS daily_walk_count FROM access_control WHERE YEAR(timestamp) = 2025 AND TIME(timestamp) NOT BETWEEN '12:00:00' AND '14:00:00' GROUP BY employee_id, DATE(timestamp) ) AS filtered_walk GROUP BY employee_id ) AS walk_stats ) AS w ON e.id = w.employee_id LEFT JOIN ( SELECT employee_id, CASE WHEN (IF(emp_avg_interaction < overall_avg_interaction, 1, 0) + IF(emp_avg_messages < overall_avg_messages, 1, 0) + IF(emp_avg_documents < overall_avg_documents, 1, 0)) = 3 THEN 3 WHEN (IF(emp_avg_interaction < overall_avg_interaction, 1, 0) + IF(emp_avg_messages < overall_avg_messages, 1, 0) + IF(emp_avg_documents < overall_avg_documents, 1, 0)) = 2 THEN 1 ELSE 0 END AS doc_score FROM ( SELECT employee_id, AVG(daily_interaction) AS emp_avg_interaction, AVG(daily_messages) AS emp_avg_messages, AVG(daily_documents) AS emp_avg_documents, AVG(AVG(daily_interaction)) OVER () AS overall_avg_interaction, AVG(AVG(daily_messages)) OVER () AS overall_avg_messages, AVG(AVG(daily_documents)) OVER () AS overall_avg_documents FROM ( SELECT employee_id, daily_interaction, daily_messages, daily_documents FROM flybook_stats WHERE stat_date >= 20250131 AND YEAR(STR_TO_DATE(stat_date, '%Y%m%d')) = 2025 ) AS filtered_fb GROUP BY employee_id ) AS fb_avg ) AS f ON e.id = f.employee_id ORDER BY score ASC; |