add_yesterday_fields_to_works.sql 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. -- 为 works 表添加 yesterday_* 字段(昨日数据快照)
  2. -- 执行前请先备份数据库
  3. -- MySQL 不支持 IF NOT EXISTS,这里提供两种方式:
  4. -- 方式1:直接执行(如果列已存在会报错,可忽略或手动删除已存在的列)
  5. -- 方式2:使用存储过程检查后添加(见下方)
  6. USE media_manager;
  7. -- ========== 方式1:直接添加(推荐,如果列已存在会报错,可忽略报错继续执行) ==========
  8. -- 1. 播放数
  9. ALTER TABLE works
  10. ADD COLUMN yesterday_play_count INT DEFAULT 0 COMMENT '昨日播放数';
  11. -- 2. 点赞数
  12. ALTER TABLE works
  13. ADD COLUMN yesterday_like_count INT DEFAULT 0 COMMENT '昨日点赞数';
  14. -- 3. 评论数
  15. ALTER TABLE works
  16. ADD COLUMN yesterday_comment_count INT DEFAULT 0 COMMENT '昨日评论数';
  17. -- 4. 分享数
  18. ALTER TABLE works
  19. ADD COLUMN yesterday_share_count INT DEFAULT 0 COMMENT '昨日分享数';
  20. -- 5. 收藏数
  21. ALTER TABLE works
  22. ADD COLUMN yesterday_collect_count INT DEFAULT 0 COMMENT '昨日收藏数';
  23. -- 6. 推荐数(视频号)
  24. ALTER TABLE works
  25. ADD COLUMN yesterday_recommend_count INT DEFAULT 0 COMMENT '昨日推荐数';
  26. -- 7. 涨粉数
  27. ALTER TABLE works
  28. ADD COLUMN yesterday_fans_increase INT DEFAULT 0 COMMENT '昨日涨粉数';
  29. -- 8. 关注数(视频号)
  30. ALTER TABLE works
  31. ADD COLUMN yesterday_follow_count INT DEFAULT 0 COMMENT '昨日关注数';
  32. -- 9. 封面点击率
  33. ALTER TABLE works
  34. ADD COLUMN yesterday_cover_click_rate VARCHAR(50) DEFAULT '0' COMMENT '昨日封面点击率';
  35. -- 10. 平均观看时长
  36. ALTER TABLE works
  37. ADD COLUMN yesterday_avg_watch_duration VARCHAR(50) DEFAULT '0' COMMENT '昨日平均观看时长';
  38. -- 11. 总观看时长
  39. ALTER TABLE works
  40. ADD COLUMN yesterday_total_watch_duration VARCHAR(50) DEFAULT '0' COMMENT '昨日总观看时长';
  41. -- 12. 完播率
  42. ALTER TABLE works
  43. ADD COLUMN yesterday_completion_rate VARCHAR(50) DEFAULT '0' COMMENT '昨日完播率';
  44. -- 13. 2秒退出率
  45. ALTER TABLE works
  46. ADD COLUMN yesterday_two_second_exit_rate VARCHAR(50) DEFAULT '0' COMMENT '昨日2秒退出率';
  47. -- 14. 5秒完播率
  48. ALTER TABLE works
  49. ADD COLUMN yesterday_completion_rate_5s VARCHAR(50) DEFAULT '0' COMMENT '昨日5秒完播率';
  50. -- 15. 曝光数
  51. ALTER TABLE works
  52. ADD COLUMN yesterday_exposure_count INT DEFAULT 0 COMMENT '昨日曝光数';
  53. -- ========== 方式2:使用存储过程安全添加(如果列已存在则跳过) ==========
  54. /*
  55. DELIMITER $$
  56. DROP PROCEDURE IF EXISTS add_column_if_not_exists$$
  57. CREATE PROCEDURE add_column_if_not_exists(
  58. IN table_name VARCHAR(255),
  59. IN column_name VARCHAR(255),
  60. IN column_definition TEXT
  61. )
  62. BEGIN
  63. DECLARE column_exists INT DEFAULT 0;
  64. SELECT COUNT(*) INTO column_exists
  65. FROM information_schema.COLUMNS
  66. WHERE TABLE_SCHEMA = DATABASE()
  67. AND TABLE_NAME = table_name
  68. AND COLUMN_NAME = column_name;
  69. IF column_exists = 0 THEN
  70. SET @sql = CONCAT('ALTER TABLE ', table_name, ' ADD COLUMN ', column_name, ' ', column_definition);
  71. PREPARE stmt FROM @sql;
  72. EXECUTE stmt;
  73. DEALLOCATE PREPARE stmt;
  74. END IF;
  75. END$$
  76. DELIMITER ;
  77. CALL add_column_if_not_exists('works', 'yesterday_play_count', 'INT DEFAULT 0 COMMENT ''昨日播放数''');
  78. CALL add_column_if_not_exists('works', 'yesterday_like_count', 'INT DEFAULT 0 COMMENT ''昨日点赞数''');
  79. CALL add_column_if_not_exists('works', 'yesterday_comment_count', 'INT DEFAULT 0 COMMENT ''昨日评论数''');
  80. CALL add_column_if_not_exists('works', 'yesterday_share_count', 'INT DEFAULT 0 COMMENT ''昨日分享数''');
  81. CALL add_column_if_not_exists('works', 'yesterday_collect_count', 'INT DEFAULT 0 COMMENT ''昨日收藏数''');
  82. CALL add_column_if_not_exists('works', 'yesterday_recommend_count', 'INT DEFAULT 0 COMMENT ''昨日推荐数''');
  83. CALL add_column_if_not_exists('works', 'yesterday_fans_increase', 'INT DEFAULT 0 COMMENT ''昨日涨粉数''');
  84. CALL add_column_if_not_exists('works', 'yesterday_follow_count', 'INT DEFAULT 0 COMMENT ''昨日关注数''');
  85. CALL add_column_if_not_exists('works', 'yesterday_cover_click_rate', 'VARCHAR(50) DEFAULT ''0'' COMMENT ''昨日封面点击率''');
  86. CALL add_column_if_not_exists('works', 'yesterday_avg_watch_duration', 'VARCHAR(50) DEFAULT ''0'' COMMENT ''昨日平均观看时长''');
  87. CALL add_column_if_not_exists('works', 'yesterday_total_watch_duration', 'VARCHAR(50) DEFAULT ''0'' COMMENT ''昨日总观看时长''');
  88. CALL add_column_if_not_exists('works', 'yesterday_completion_rate', 'VARCHAR(50) DEFAULT ''0'' COMMENT ''昨日完播率''');
  89. CALL add_column_if_not_exists('works', 'yesterday_two_second_exit_rate', 'VARCHAR(50) DEFAULT ''0'' COMMENT ''昨日2秒退出率''');
  90. CALL add_column_if_not_exists('works', 'yesterday_completion_rate_5s', 'VARCHAR(50) DEFAULT ''0'' COMMENT ''昨日5秒完播率''');
  91. CALL add_column_if_not_exists('works', 'yesterday_exposure_count', 'INT DEFAULT 0 COMMENT ''昨日曝光数''');
  92. DROP PROCEDURE IF EXISTS add_column_if_not_exists;
  93. */