init: 初始化 dpb 桃育种系统代码库
前后端 + 后端 FastAPI 全量源码、部署脚本与文档。
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
-- 组合得失漏斗 v_combination_funnel:按 bre_cross_combination 汇总六级派生指标。
|
||||
-- 花(bre_pollination) → 果(effective_count) → 种(bre_seed_lot) → 苗(bre_seedling)
|
||||
-- → 定植(bre_planting) → 树(bre_tree) → 入选(bre_selection_result)。
|
||||
-- 数据源全为既有表,仅聚合不改写源数据;普通 VIEW 保 fresh(F2 决策:统计管线用普通 VIEW)。
|
||||
-- 幂等:DROP IF EXISTS + CREATE OR REPLACE,可重跑。
|
||||
DROP VIEW IF EXISTS v_combination_funnel;
|
||||
CREATE OR REPLACE VIEW v_combination_funnel AS
|
||||
WITH p AS ( -- 花 → 果
|
||||
SELECT combination_id,
|
||||
SUM(flower_count) AS flower_count,
|
||||
SUM(effective_count) AS effective_count
|
||||
FROM bre_pollination
|
||||
WHERE is_deleted = false
|
||||
GROUP BY combination_id
|
||||
), sl AS ( -- 果 → 种
|
||||
SELECT combination_id,
|
||||
SUM(seed_count) AS seed_count,
|
||||
AVG(germination_rate) AS germination_rate
|
||||
FROM bre_seed_lot
|
||||
WHERE is_deleted = false
|
||||
GROUP BY combination_id
|
||||
), sd AS ( -- 种 → 苗
|
||||
SELECT combination_id,
|
||||
SUM(seedling_count) AS seedling_count,
|
||||
SUM(strong_seedling_count) AS strong_seedling_count
|
||||
FROM bre_seedling
|
||||
WHERE is_deleted = false
|
||||
GROUP BY combination_id
|
||||
), pt AS ( -- 苗 → 定植
|
||||
SELECT combination_id,
|
||||
SUM(tree_count) AS planting_count
|
||||
FROM bre_planting
|
||||
WHERE is_deleted = false
|
||||
GROUP BY combination_id
|
||||
), tr AS ( -- 定植 → 单株(非软删全计,含死亡,作评价群体基数)
|
||||
SELECT combination_id,
|
||||
COUNT(*) AS tree_count
|
||||
FROM bre_tree
|
||||
WHERE is_deleted = false
|
||||
GROUP BY combination_id
|
||||
), sr AS ( -- 单株 → 入选
|
||||
SELECT combination_id,
|
||||
COUNT(*) AS selected_count
|
||||
FROM bre_selection_result
|
||||
WHERE is_deleted = false
|
||||
GROUP BY combination_id
|
||||
)
|
||||
SELECT
|
||||
cc.id AS combination_id,
|
||||
cc.combination_code,
|
||||
cc.cross_year,
|
||||
cc.female_parent_id,
|
||||
cc.male_parent_id,
|
||||
cc.design_type,
|
||||
cc.stage,
|
||||
-- 花 → 果
|
||||
p.flower_count,
|
||||
p.effective_count,
|
||||
CASE WHEN p.flower_count > 0
|
||||
THEN ROUND(p.effective_count::numeric / p.flower_count * 100, 2)
|
||||
ELSE NULL END AS fruit_set_rate, -- 结实率(%)
|
||||
-- 果 → 种
|
||||
sl.seed_count,
|
||||
sl.germination_rate, -- 种子批平均发芽率(%)
|
||||
-- 种 → 苗
|
||||
sd.seedling_count,
|
||||
sd.strong_seedling_count,
|
||||
CASE WHEN sl.seed_count > 0
|
||||
THEN ROUND(sd.seedling_count::numeric / sl.seed_count * 100, 2)
|
||||
ELSE NULL END AS emergence_rate, -- 出苗率(%)
|
||||
-- 苗 → 定植
|
||||
pt.planting_count,
|
||||
-- 定植 → 单株
|
||||
tr.tree_count,
|
||||
-- 单株 → 入选(选择强度:入选率)
|
||||
sr.selected_count,
|
||||
CASE WHEN tr.tree_count > 0
|
||||
THEN ROUND(sr.selected_count::numeric / tr.tree_count * 100, 2)
|
||||
ELSE NULL END AS selection_rate -- 入选率/选择强度(%)
|
||||
FROM bre_cross_combination cc
|
||||
LEFT JOIN p ON p.combination_id = cc.id
|
||||
LEFT JOIN sl ON sl.combination_id = cc.id
|
||||
LEFT JOIN sd ON sd.combination_id = cc.id
|
||||
LEFT JOIN pt ON pt.combination_id = cc.id
|
||||
LEFT JOIN tr ON tr.combination_id = cc.id
|
||||
LEFT JOIN sr ON sr.combination_id = cc.id
|
||||
WHERE cc.is_deleted = false;
|
||||
Reference in New Issue
Block a user