ai_member_xiaoxi/scripts/l2_pass_time.sh
2026-05-07 08:00:01 +08:00

49 lines
2.7 KiB
Bash
Executable File

#!/bin/bash
# L2 每个课时首次通关耗时统计
export PGPASSWORD='LdfjdjL83h3h3^$&**YGG*'
PGHOST='bj-postgres-16pob4sg.sql.tencentcdb.com'
PGPORT='28591'
PGUSER='ai_member'
PGDATABASE='vala_bi'
PSQL="psql -h \$PGHOST -p \$PGPORT -U \$PGUSER -d \$PGDATABASE -t -A"
# 获取所有 L2 章节
$PSQL -c "SELECT id FROM bi_level_unit_lesson WHERE course_level='L2' ORDER BY id;" > /tmp/l2_ch_ids.txt
echo "chapter_id|season|unit|lesson|完成人数|平均用时_分钟"
while read cid; do
# 获取章节信息
info=$($PSQL -c "SELECT course_season||'|'||course_unit||'|'||course_lesson FROM bi_level_unit_lesson WHERE id=$cid;")
# 统计首次完成: 从8张分表收集
result=$($PSQL -c "
WITH fd AS (
SELECT user_id, chapter_unique_id FROM bi_user_chapter_play_record_0 WHERE play_status=1 AND chapter_id=$cid
UNION ALL SELECT user_id, chapter_unique_id FROM bi_user_chapter_play_record_1 WHERE play_status=1 AND chapter_id=$cid
UNION ALL SELECT user_id, chapter_unique_id FROM bi_user_chapter_play_record_2 WHERE play_status=1 AND chapter_id=$cid
UNION ALL SELECT user_id, chapter_unique_id FROM bi_user_chapter_play_record_3 WHERE play_status=1 AND chapter_id=$cid
UNION ALL SELECT user_id, chapter_unique_id FROM bi_user_chapter_play_record_4 WHERE play_status=1 AND chapter_id=$cid
UNION ALL SELECT user_id, chapter_unique_id FROM bi_user_chapter_play_record_5 WHERE play_status=1 AND chapter_id=$cid
UNION ALL SELECT user_id, chapter_unique_id FROM bi_user_chapter_play_record_6 WHERE play_status=1 AND chapter_id=$cid
UNION ALL SELECT user_id, chapter_unique_id FROM bi_user_chapter_play_record_7 WHERE play_status=1 AND chapter_id=$cid
),
times AS (
SELECT fd.chapter_unique_id, COALESCE(SUM(c.interval_time),0) AS total_ms FROM fd
LEFT JOIN (
SELECT chapter_unique_id, interval_time FROM bi_user_component_play_record_0
UNION ALL SELECT chapter_unique_id, interval_time FROM bi_user_component_play_record_1
UNION ALL SELECT chapter_unique_id, interval_time FROM bi_user_component_play_record_2
UNION ALL SELECT chapter_unique_id, interval_time FROM bi_user_component_play_record_3
UNION ALL SELECT chapter_unique_id, interval_time FROM bi_user_component_play_record_4
UNION ALL SELECT chapter_unique_id, interval_time FROM bi_user_component_play_record_5
UNION ALL SELECT chapter_unique_id, interval_time FROM bi_user_component_play_record_6
UNION ALL SELECT chapter_unique_id, interval_time FROM bi_user_component_play_record_7
) c ON fd.chapter_unique_id = c.chapter_unique_id
GROUP BY fd.chapter_unique_id
)
SELECT COUNT(*), ROUND(AVG(total_ms)/60000.0, 1) FROM times WHERE total_ms > 0;
" 2>&1)
echo "$cid|$info|$result"
done < /tmp/l2_ch_ids.txt