不止热门角色,我们为你扩展了更多细分角色分类,覆盖职场提升、商业增长、内容创作、学习规划等多元场景。精准匹配不同目标,让每一次生成都更有方向、更高命中率。
立即探索更多角色分类,找到属于你的增长加速器。
-- 方言:PostgreSQL(12+)
WITH base AS (
SELECT
event_date::date AS dt,
channel,
user_id,
session_id,
COALESCE(session_duration_seconds, 0) AS session_seconds,
COALESCE(page_views, 0) AS page_views
FROM user_activity_log
WHERE event_date >= current_date - INTERVAL '6 day'
AND event_date < current_date + INTERVAL '1 day' -- 含今天在内近7天
AND platform = 'mobile'
AND channel IS NOT NULL
AND btrim(channel) <> ''
AND CAST(user_id AS TEXT) NOT LIKE 'test_%' -- 剔除测试账号前缀
AND CAST(user_id AS TEXT) NOT IN ('10001','10002') -- 剔除指定测试账号
),
sessions AS (
-- 若明细已为会话粒度,则此处 SUM 等价于原值
SELECT
dt,
channel,
user_id,
session_id,
SUM(session_seconds) AS session_seconds,
SUM(page_views) AS page_views
FROM base
GROUP BY dt, channel, user_id, session_id
),
agg AS (
SELECT
dt AS event_date,
channel,
COUNT(DISTINCT user_id) AS dau,
AVG(session_seconds)::numeric(18,2) AS avg_session_seconds,
AVG(page_views)::numeric(18,2) AS avg_pages
FROM sessions
GROUP BY dt, channel
)
SELECT event_date, channel, dau, avg_session_seconds, avg_pages
FROM agg
ORDER BY event_date ASC, dau DESC;
注:以下以 MySQL 8.0+ 为示例;如使用 PostgreSQL,见后附替代语句。
-- MySQL 8.0+
SELECT
om.pay_method,
COUNT(*) AS order_cnt,
ROUND(SUM(om.pay_amount), 2) AS gmv,
ROUND(SUM(om.pay_amount) / NULLIF(COUNT(*), 0), 2) AS arpu
FROM order_master AS om
WHERE
om.pay_time >= NOW() - INTERVAL 30 DAY
AND om.order_status IN ('paid', 'shipped', 'completed')
AND om.currency = 'CNY'
-- 排除测试订单,且保留 tag 为空的正常订单
AND (om.tag IS NULL OR om.tag <> 'test')
GROUP BY
om.pay_method
ORDER BY
gmv DESC,
order_cnt DESC;
-- 如果您的数据库是 PostgreSQL,可使用如下等价语句
-- PostgreSQL
SELECT
om.pay_method,
COUNT(*) AS order_cnt,
ROUND(SUM(om.pay_amount)::numeric, 2) AS gmv,
ROUND((SUM(om.pay_amount) / NULLIF(COUNT(*), 0))::numeric, 2) AS arpu
FROM order_master AS om
WHERE
om.pay_time >= NOW() - INTERVAL '30 days'
AND om.order_status IN ('paid', 'shipped', 'completed')
AND om.currency = 'CNY'
AND (om.tag IS NULL OR om.tag <> 'test')
GROUP BY
om.pay_method
ORDER BY
gmv DESC,
order_cnt DESC;
说明:示例中使用列名 pay_time、pay_amount、order_status、tag、currency、pay_method;如您的实际列名不同,请相应替换。
注:以下SQL对常见关系型数据库(MySQL、PostgreSQL、SQL Server、Oracle)均通用。如实际列名与示例不完全一致,请按实际列名替换(如last_inbound_time/recent_inbound_time、category/类别等)。
SELECT
sku_id,
warehouse,
category,
current_stock,
safety_stock,
(safety_stock - current_stock) AS shortage,
last_inbound_time AS recent_inbound_time
FROM product_inventory
WHERE
warehouse = 'WH_EAST'
AND sku_status = 'active'
AND safety_stock > 0
AND current_stock < safety_stock
ORDER BY
-- 缺口量降序
shortage DESC,
-- 将最近入库时间为空的记录排在最后,再按时间升序
CASE WHEN last_inbound_time IS NULL THEN 1 ELSE 0 END ASC,
last_inbound_time ASC;
试用后开通会员即可无限使用