31 lines
968 B
SQL
31 lines
968 B
SQL
|
|
-- ============================================================
|
||
|
|
-- 002a_diagnostic_episode_number.sql
|
||
|
|
-- 诊断脚本:将 episodes.episode_number 从全局 UNIQUE 改为 (air_year, episode_number) 复合 UNIQUE
|
||
|
|
-- 执行方式: psql -U postgres -d milsci_dev -f 002a_diagnostic_episode_number.sql
|
||
|
|
-- 前置条件:先设 $env:PGCLIENTENCODING="UTF8"
|
||
|
|
-- ============================================================
|
||
|
|
|
||
|
|
-- 三项诊断(任一异常停下找制片人)
|
||
|
|
SELECT
|
||
|
|
'total_rows' as check_name,
|
||
|
|
count(*) as value
|
||
|
|
FROM episodes
|
||
|
|
UNION ALL
|
||
|
|
SELECT
|
||
|
|
'null_air_date' as check_name,
|
||
|
|
count(*) as value
|
||
|
|
FROM episodes
|
||
|
|
WHERE air_date IS NULL
|
||
|
|
UNION ALL
|
||
|
|
SELECT
|
||
|
|
'duplicate_year_epnum' as check_name,
|
||
|
|
count(*) as value
|
||
|
|
FROM (
|
||
|
|
SELECT
|
||
|
|
EXTRACT(YEAR FROM air_date)::int as air_year,
|
||
|
|
episode_number
|
||
|
|
FROM episodes
|
||
|
|
WHERE original_episode_id IS NULL
|
||
|
|
GROUP BY 1, 2
|
||
|
|
HAVING count(*) > 1
|
||
|
|
) as dup;
|