You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL如何统计用户已读完的完整章节总次数 多表关联查询实现

实现思路

  1. 先统计每个用户对各章节下每一个片段的阅读次数
  2. 对同一用户的同一章节,取所有片段阅读次数的最小值,即为该章节的完整读完次数(每集齐一整套所有片段的阅读记录就算完成1次)
  3. 汇总所有章节的完成次数,得到用户累计读完完整章节的总次数

实现SQL

SELECT 
    user_id,
    SUM(chapter_finish_count) AS total_chapters_read
FROM (
    -- 计算每个用户每个章节的完整读完次数
    SELECT 
        ubt.user_id,
        brp.bible_chapter_id,
        MIN(portion_read_cnt) AS chapter_finish_count
    FROM (
        -- 统计每个用户读每个章节下每个片段的次数
        SELECT 
            user_id,
            bible_reading_portion_id,
            COUNT(*) AS portion_read_cnt
        FROM user_bible_trackings
        GROUP BY user_id, bible_reading_portion_id
    ) ubt_cnt
    INNER JOIN bible_reading_portions brp ON ubt_cnt.bible_reading_portion_id = brp.id
    GROUP BY ubt_cnt.user_id, brp.bible_chapter_id
) user_chapter_finish
GROUP BY user_id;

结果验证

针对你提供的测试数据,上述SQL执行后输出结果和预期完全一致:

user_idtotal_chapters_read
15

内容的提问来源于stack exchange,提问作者kunal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 23:00:02