Verified Commit 3e6264a8 authored by 施乐存's avatar 施乐存
Browse files

添加对分区的历时分析

Signed-off-by: 施乐存's avatarszdytom <szdytom@qq.com>
parent a84c0419
Loading
Loading
Loading
Loading
+318 KiB
Loading image diff...
+96.2 KiB
Loading image diff...
+98 −0

File added.

Preview size limit exceeded, changes collapsed.

+42 −0
Original line number Diff line number Diff line
(* 从数据库获取分区数据 *)
partitionData = Normal[ExternalEvaluate[
  DatabaseReference[
   File[FileNameJoin[{NotebookDirectory[], "..", "data.db"}]]],
   "WITH partition_counts AS (
    SELECT 
        COALESCE(vc.name, '未知分区') as partition_name,
        COUNT(v.id) as video_count,
        ROUND(COUNT(v.id) * 100.0 / (SELECT COUNT(*) FROM videos), 2) as percentage,
        ROW_NUMBER() OVER (ORDER BY COUNT(v.id) DESC) as rank
    FROM videos v
    LEFT JOIN video_categories vc ON v.pidv2 = vc.tid
    GROUP BY v.pidv2
)
SELECT 
    partition_name as 分区,
    video_count as 视频数量,
    percentage as 占比
FROM partition_counts
WHERE rank <= 15
UNION ALL
SELECT 
    '其他分区' as 分区,
    SUM(video_count) as 视频数量,
    ROUND(SUM(percentage), 2) as 占比
FROM partition_counts
WHERE rank > 15
ORDER BY 视频数量 DESC;"]];

(* 准备饼图数据 *)
labels = #["分区"] <> "(" <> ToString[#["占比"]] <> "%)" & /@ partitionData;
values = #["视频数量"] & /@ partitionData;

(* 绘制饼图 *)
PieChart[values,
 ChartLabels -> labels,
 ChartStyle->"Pastel",
 PlotLabel -> Style["上榜视频分区分布", 16, Bold],
 LabelStyle -> Directive[12],
 ImageSize -> 800,
 PlotRangePadding -> Scaled[0.1]
]