|
|
@@ -492,34 +492,35 @@
|
|
|
interrupt_num,
|
|
|
dept_id
|
|
|
)
|
|
|
- SELECT
|
|
|
- temp.company_user_id,
|
|
|
- temp.sop_id,
|
|
|
- temp.period_id,
|
|
|
- temp.this_date as data_date,
|
|
|
- COALESCE(log_stats.send_count, 0) as send_num,
|
|
|
- COALESCE(log_stats.period_count, 0) as train_camp_num,
|
|
|
- COALESCE(log_stats.not_register_count, 0) as not_registered_num,
|
|
|
- COALESCE(log_stats.completed_count, 0) as completed_num,
|
|
|
- COALESCE(log_stats.interrupt_count, 0) as interrupt_num,
|
|
|
- temp.dept_id
|
|
|
- FROM fs_statis_temp_param temp
|
|
|
- LEFT JOIN (
|
|
|
- -- 一次性统计所有指标,避免重复扫描
|
|
|
+ WITH log_stats AS (
|
|
|
SELECT
|
|
|
company_user_id,
|
|
|
sop_id,
|
|
|
qw_user_id,
|
|
|
camp_period_time,
|
|
|
- COUNT(DISTINCT log_id) as send_count,
|
|
|
- COUNT(DISTINCT qw_external_contact_id) as period_count,
|
|
|
- COUNT(DISTINCT CASE WHEN log_type = 3 THEN log_id END) as not_register_count,
|
|
|
- COUNT(DISTINCT CASE WHEN log_type = 2 THEN log_id END) as completed_count,
|
|
|
- COUNT(DISTINCT CASE WHEN (log_type = 4 or log_type = 1) THEN log_id END) as interrupt_count
|
|
|
+ COUNT(DISTINCT log_id) AS send_count,
|
|
|
+ COUNT(DISTINCT qw_external_contact_id) AS period_count,
|
|
|
+ COUNT(DISTINCT CASE WHEN log_type = 3 THEN log_id END) AS not_register_count,
|
|
|
+ COUNT(DISTINCT CASE WHEN log_type = 2 THEN log_id END) AS completed_count,
|
|
|
+ COUNT(DISTINCT CASE WHEN log_type IN (1, 4) THEN log_id END) AS interrupt_count
|
|
|
FROM fs_course_watch_log
|
|
|
- WHERE (DATE(create_time) = #{date})
|
|
|
+ WHERE create_time >= STR_TO_DATE(#{date}, '%Y-%m-%d')
|
|
|
+ AND create_time < DATE_ADD(STR_TO_DATE(#{date}, '%Y-%m-%d'), INTERVAL 1 DAY)
|
|
|
GROUP BY company_user_id, sop_id, qw_user_id, camp_period_time
|
|
|
- ) log_stats ON temp.company_user_id = log_stats.company_user_id
|
|
|
+ )
|
|
|
+ SELECT
|
|
|
+ temp.company_user_id,
|
|
|
+ temp.sop_id,
|
|
|
+ temp.period_id,
|
|
|
+ temp.this_date AS data_date,
|
|
|
+ COALESCE(log_stats.send_count, 0) AS send_num,
|
|
|
+ COALESCE(log_stats.period_count, 0) AS train_camp_num,
|
|
|
+ COALESCE(log_stats.not_register_count, 0) AS not_registered_num,
|
|
|
+ COALESCE(log_stats.completed_count, 0) AS completed_num,
|
|
|
+ COALESCE(log_stats.interrupt_count, 0) AS interrupt_num,
|
|
|
+ temp.dept_id
|
|
|
+ FROM fs_statis_temp_param temp
|
|
|
+ LEFT JOIN log_stats ON temp.company_user_id = log_stats.company_user_id
|
|
|
AND temp.sop_id = log_stats.sop_id
|
|
|
AND temp.start_time = log_stats.camp_period_time
|
|
|
AND temp.qw_user_id = log_stats.qw_user_id
|
|
|
@@ -527,54 +528,39 @@
|
|
|
|
|
|
UNION ALL
|
|
|
|
|
|
--- 孤立数据处理部分保持不变,但也进行了优化
|
|
|
SELECT
|
|
|
orphan_summary.company_user_id,
|
|
|
orphan_summary.sop_id,
|
|
|
- '-1' as period_id,
|
|
|
- #{date} as data_date,
|
|
|
+ '-1' AS period_id,
|
|
|
+ #{date} AS data_date,
|
|
|
orphan_summary.send_num,
|
|
|
orphan_summary.train_camp_num,
|
|
|
orphan_summary.not_registered_num,
|
|
|
orphan_summary.completed_num,
|
|
|
orphan_summary.interrupt_num,
|
|
|
- cu.dept_id as dept_id
|
|
|
+ cu.dept_id AS dept_id
|
|
|
FROM (
|
|
|
- SELECT
|
|
|
- orphan_data.company_user_id,
|
|
|
- orphan_data.sop_id,
|
|
|
- SUM(orphan_data.send_count) as send_num,
|
|
|
- SUM(orphan_data.period_count) as train_camp_num,
|
|
|
- SUM(orphan_data.not_registered_num) as not_registered_num,
|
|
|
- SUM(orphan_data.completed_count) as completed_num,
|
|
|
- SUM(orphan_data.interrupt_num) as interrupt_num
|
|
|
- FROM (
|
|
|
- SELECT
|
|
|
- log_data.company_user_id,
|
|
|
- log_data.sop_id,
|
|
|
- log_data.qw_user_id,
|
|
|
- log_data.camp_period_time,
|
|
|
- COUNT(DISTINCT log_data.log_id) as send_count,
|
|
|
- COUNT(DISTINCT log_data.qw_external_contact_id) as period_count,
|
|
|
- COUNT(DISTINCT CASE WHEN log_data.log_type = 3 THEN log_data.log_id END) as not_registered_num,
|
|
|
- COUNT(DISTINCT CASE WHEN log_data.log_type = 2 THEN log_data.log_id END) as completed_count,
|
|
|
- COUNT(DISTINCT CASE WHEN (log_data.log_type = 4 or log_type = 1) THEN log_data.log_id END) as interrupt_num
|
|
|
- FROM fs_course_watch_log log_data
|
|
|
- WHERE (DATE(log_data.create_time) = #{date})
|
|
|
- GROUP BY log_data.company_user_id, log_data.sop_id, log_data.qw_user_id, log_data.camp_period_time
|
|
|
- ) orphan_data
|
|
|
- WHERE NOT EXISTS (
|
|
|
- SELECT 1
|
|
|
- FROM fs_statis_temp_param temp
|
|
|
- WHERE temp.company_user_id = orphan_data.company_user_id
|
|
|
- AND ((temp.sop_id = orphan_data.sop_id) OR (temp.sop_id IS NULL AND orphan_data.sop_id IS NULL))
|
|
|
- AND temp.qw_user_id = orphan_data.qw_user_id
|
|
|
- AND ((temp.start_time = orphan_data.camp_period_time) OR (temp.start_time IS NULL AND orphan_data.camp_period_time IS NULL))
|
|
|
- )
|
|
|
- GROUP BY orphan_data.company_user_id, orphan_data.sop_id
|
|
|
- ) orphan_summary
|
|
|
- LEFT JOIN company_user cu ON cu.user_id = orphan_summary.company_user_id
|
|
|
- WHERE cu.dept_id IS NOT NULL AND cu.dept_id != 0 -- 过滤掉dept_id为NULL或0的记录
|
|
|
+ SELECT
|
|
|
+ orphan_data.company_user_id,
|
|
|
+ orphan_data.sop_id,
|
|
|
+ SUM(orphan_data.send_count) AS send_num,
|
|
|
+ SUM(orphan_data.period_count) AS train_camp_num,
|
|
|
+ SUM(orphan_data.not_register_count) AS not_registered_num,
|
|
|
+ SUM(orphan_data.completed_count) AS completed_num,
|
|
|
+ SUM(orphan_data.interrupt_count) AS interrupt_num
|
|
|
+ FROM log_stats orphan_data
|
|
|
+ WHERE NOT EXISTS (
|
|
|
+ SELECT 1
|
|
|
+ FROM fs_statis_temp_param temp
|
|
|
+ WHERE temp.company_user_id = orphan_data.company_user_id
|
|
|
+ AND ((temp.sop_id = orphan_data.sop_id) OR (temp.sop_id IS NULL AND orphan_data.sop_id IS NULL))
|
|
|
+ AND temp.qw_user_id = orphan_data.qw_user_id
|
|
|
+ AND ((temp.start_time = orphan_data.camp_period_time) OR (temp.start_time IS NULL AND orphan_data.camp_period_time IS NULL))
|
|
|
+ )
|
|
|
+ GROUP BY orphan_data.company_user_id, orphan_data.sop_id
|
|
|
+ ) orphan_summary
|
|
|
+ LEFT JOIN company_user cu ON cu.user_id = orphan_summary.company_user_id
|
|
|
+ WHERE cu.dept_id IS NOT NULL AND cu.dept_id != 0
|
|
|
</insert>
|
|
|
|
|
|
</mapper>
|