diff --git a/reading-platform-java/src/main/resources/db/migration/V10__update_course_package_stats.sql b/reading-platform-java/src/main/resources/db/migration/V10__update_course_package_stats.sql new file mode 100644 index 0000000..54f0f3e --- /dev/null +++ b/reading-platform-java/src/main/resources/db/migration/V10__update_course_package_stats.sql @@ -0,0 +1,37 @@ +-- ----------------------------------------------------- +-- V10: 更新课程包统计数据 +-- 说明:根据 lesson 表实际数据更新 course_package 的 usage_count 和 teacher_count +-- 时间:2026-03-20 +-- ----------------------------------------------------- + +-- 1. 更新 usage_count:统计 status != 'cancelled' 的课程数 +UPDATE course_package cp +SET usage_count = ( + SELECT COUNT(*) + FROM lesson l + WHERE l.course_id = cp.id + AND l.status != 'cancelled' + AND l.deleted = 0 +) +WHERE cp.deleted = 0; + +-- 2. 更新 teacher_count:统计 status = 'completed' 的课程中去重教师数 +UPDATE course_package cp +SET teacher_count = ( + SELECT COUNT(DISTINCT l.teacher_id) + FROM lesson l + WHERE l.course_id = cp.id + AND l.status = 'completed' + AND l.teacher_id IS NOT NULL + AND l.deleted = 0 +) +WHERE cp.deleted = 0; + +-- 3. 处理 NULL 值,确保字段为 0 而不是 NULL +UPDATE course_package cp +SET usage_count = 0 +WHERE usage_count IS NULL AND deleted = 0; + +UPDATE course_package cp +SET teacher_count = 0 +WHERE teacher_count IS NULL AND deleted = 0;