数据库文档编写,开发规范文档,数据库接入
This commit is contained in:
@@ -177,6 +177,8 @@ $$;
|
||||
-- -------------------------------------------------------------------------------------
|
||||
-- 4. 函数: rpc_analytics_traffic_sources
|
||||
-- 描述: 获取流量来源分布 (基于注册来源)
|
||||
-- 兼容性说明:部分环境的 ak_users 可能不存在 registration_source 字段。
|
||||
-- 为避免 RPC 报错导致页面加载失败,这里做“字段存在则分组统计,不存在则全部归为未知”的兼容。
|
||||
-- -------------------------------------------------------------------------------------
|
||||
CREATE OR REPLACE FUNCTION public.rpc_analytics_traffic_sources(
|
||||
p_start_date DATE,
|
||||
@@ -186,16 +188,40 @@ RETURNS TABLE (
|
||||
name TEXT,
|
||||
value BIGINT
|
||||
)
|
||||
LANGUAGE sql
|
||||
AS $$
|
||||
SELECT
|
||||
COALESCE(registration_source, '未知') AS name,
|
||||
COUNT(id)::BIGINT AS value
|
||||
FROM public.ak_users
|
||||
WHERE created_at::DATE BETWEEN p_start_date AND p_end_date
|
||||
GROUP BY name
|
||||
ORDER BY value DESC;
|
||||
$$;
|
||||
LANGUAGE plpgsql
|
||||
AS $
|
||||
DECLARE
|
||||
has_registration_source BOOLEAN := FALSE;
|
||||
BEGIN
|
||||
SELECT EXISTS (
|
||||
SELECT 1
|
||||
FROM information_schema.columns
|
||||
WHERE table_schema = 'public'
|
||||
AND table_name = 'ak_users'
|
||||
AND column_name = 'registration_source'
|
||||
) INTO has_registration_source;
|
||||
|
||||
IF has_registration_source THEN
|
||||
RETURN QUERY
|
||||
EXECUTE '
|
||||
SELECT
|
||||
COALESCE(registration_source, ''未知'') AS name,
|
||||
COUNT(id)::BIGINT AS value
|
||||
FROM public.ak_users
|
||||
WHERE created_at::DATE BETWEEN $1 AND $2
|
||||
GROUP BY name
|
||||
ORDER BY value DESC
|
||||
'
|
||||
USING p_start_date, p_end_date;
|
||||
ELSE
|
||||
RETURN QUERY
|
||||
SELECT '未知'::TEXT AS name,
|
||||
COUNT(id)::BIGINT AS value
|
||||
FROM public.ak_users
|
||||
WHERE created_at::DATE BETWEEN p_start_date AND p_end_date;
|
||||
END IF;
|
||||
END;
|
||||
$;
|
||||
|
||||
-- =====================================================================================
|
||||
-- 5. 完成提示
|
||||
|
||||
Reference in New Issue
Block a user