×
¥
查看详情
🔥 会员专享 文生文 数据集

数据库查询专家

👁️ 96 次查看
📅 Dec 3, 2025
💡 核心价值: 本提示词专为数据库管理和查询场景设计,能够根据用户提供的表名和查询需求,生成准确、高效的SQL查询语句。提示词采用专业数据库管理员角色设定,具备数据检索、性能优化、安全规范等多方面能力,可满足日常数据查询、报表生成、数据分析等多种业务场景需求。通过结构化的工作流程和明确的输出规范,确保生成的SQL语句既符合技术标准又易于理解执行。

🎯 可自定义参数(4个)

表名称
需要查询的数据表名称
查询需求
具体的查询需求描述
查询条件
查询的筛选条件
排序要求
查询结果的排序要求

🎨 效果示例

查询需求分析

  • 目标:统计近7天“mobile”平台各渠道的日活用户数(去重 user_id)、平均会话时长(秒)与平均页面浏览数。
  • 过滤条件:
    • 事件日期在最近7日(含今天)
    • 平台 = mobile
    • 剔除内部测试账号:user_id 前缀为 'test_' 或 user_id in (10001, 10002)
    • 渠道字段非空且非空字符串
  • 输出字段:日期、渠道、DAU、avg_session_seconds、avg_pages
  • 排序:日期升序,其次 DAU 降序
  • 假设:表 user_activity_log 至少包含以下字段
    • event_date(date 或可转为日期)
    • platform(文本)
    • channel(文本)
    • user_id(数值或文本)
    • session_id(会话标识)
    • session_duration_seconds(会话时长,秒)
    • page_views(会话内页面浏览数)
  • 备注:若表为事件粒度,需先按 session_id 聚合到会话粒度;若已为会话粒度,则聚合结果等同于明细。

SQL查询语句

-- 方言: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;

查询逻辑说明

  • 时间范围:使用 event_date 在 [当前日期-6天, 当前日期] 的闭区间,确保覆盖近7天(含今天)。采用“左闭右开”的写法实现等价效果,便于索引利用。
  • 平台与渠道过滤:
    • 仅统计 platform='mobile'
    • 渠道字段需非空且去除两端空白后不为空字符串
  • 剔除内部测试账号:
    • 以 CAST(user_id AS TEXT) NOT LIKE 'test_%' 排除以 test_ 开头的账号
    • 以 CAST(user_id AS TEXT) NOT IN ('10001','10002') 排除指定的测试账号
    • 该写法对 user_id 为数值或文本类型均可安全工作(在 PostgreSQL 中数值转文本合法)
  • 会话聚合:
    • sessions CTE 将明细汇总到会话粒度(dt, channel, user_id, session_id)并聚合 session_seconds 与 page_views
    • 若源表已为会话粒度,则该聚合为幂等(SUM 等于原值)
  • 指标计算:
    • DAU:COUNT(DISTINCT user_id) 按天按渠道去重用户数
    • 平均会话时长与平均页面浏览数:以会话为单位求均值(同一天同一渠道的所有会话)
  • 排序:按日期升序,其次按 DAU 降序

性能建议

  • 索引/分区
    • 推荐分区:按 event_date RANGE 分区,便于时间裁剪
    • 推荐复合索引(或分区内索引):
      • (platform, event_date, channel)
      • 如 DAU 计算压力大,可增加 (event_date, platform, channel, user_id) 覆盖索引以加速去重扫描
    • 若 channel 空值较多,可考虑部分索引:
      • CREATE INDEX ON user_activity_log (event_date, channel) WHERE platform='mobile' AND channel IS NOT NULL AND btrim(channel) <> '';
  • 谓词可索引性
    • 保持 WHERE 子句对 event_date 无函数包裹(已做到),利于使用索引/分区裁剪
    • 将用户过滤转换为 CAST(user_id AS TEXT) 仅在非选择性字段上执行,且发生在较小范围(时间+平台+渠道已初步过滤),对大表建议评估开销
  • 执行计划与统计信息
    • 定期 ANALYZE 保持统计信息新鲜
    • 如数据量极大且准实时要求高,可考虑预聚合到日-渠道-会话/用户事实表,或使用近似去重(如 HyperLogLog 扩展)仅在允许近似的场景下使用
  • I/O 与并行
    • PostgreSQL 可开启并行聚合(parallel aggregate),提升 COUNT DISTINCT/AVG 的吞吐

使用注意事项

  • 字段类型确认:
    • 若不存在 event_date 字段而只有 event_time(timestamp),将查询中的 event_date 换为 date(event_time),并相应调整时间过滤:
      • WHERE event_time >= date_trunc('day', now()) - INTERVAL '6 day' AND event_time < date_trunc('day', now()) + INTERVAL '1 day'
    • 若 user_id 类型固定为数值且无前缀型测试账号,可移除 LIKE 过滤,仅保留 NOT IN (10001,10002)
  • 口径确认:
    • 平均会话时长和平均页面浏览数为“会话粒度”的均值;如需按“用户粒度”均值,需先按用户聚合,再取均值
  • 数据安全:
    • 本查询仅输出聚合结果,不暴露个人标识;请确保执行环境具备最小化权限(只读,按需授权)
  • 时间语义:
    • “近7天”以数据库 current_date 所在时区为准;跨时区业务请统一到业务时区(例如 UTC+8)后再统计
  • 空白渠道:
    • 已排除 NULL 和空字符串;若存在仅空白字符的渠道值已通过 btrim 过滤排除

查询需求分析

  • 目的:统计近30天内已支付订单的GMV、订单数与客单价(GMV/订单数),并按支付方式分组输出,便于业务侧评估各支付渠道的贡献度。
  • 数据范围与过滤:
    • 时间:支付时间在近30天
    • 状态:order_status in ('paid','shipped','completed')
    • 排除测试单:tag != 'test'(同时保留 tag 为 NULL 的正常订单)
    • 币种:CNY
  • 输出字段:pay_method, order_cnt, gmv, arpu
  • 排序:GMV 降序,其次订单数降序

注:以下以 MySQL 8.0+ 为示例;如使用 PostgreSQL,见后附替代语句。

SQL查询语句

-- 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 >= 当前时间减去30天,取滚动近30天的数据。
  • 状态过滤:仅保留已付款及之后流程的订单(paid/shipped/completed)。
  • 测试单排除:采用 (tag IS NULL OR tag <> 'test') 而非 tag <> 'test',确保 NULL 不被误排除(NULL 与任何比较结果为 UNKNOWN,会在 WHERE 中被过滤)。
  • 币种过滤:仅统计 CNY 订单,避免跨币种对 GMV 造成误差。
  • 聚合与分组:
    • order_cnt = COUNT(*)(按订单行计数)
    • gmv = SUM(pay_amount)
    • arpu = gmv / order_cnt;用 NULLIF 防止极端情况下除零错误
  • 排序:先按 gmv 降序,再按 order_cnt 降序,满足业务排序要求。
  • 数值处理:ROUND 保留两位小数,便于报表展示。

说明:示例中使用列名 pay_time、pay_amount、order_status、tag、currency、pay_method;如您的实际列名不同,请相应替换。

性能建议

  • 索引设计(MySQL 优先顺序示例):
    • 推荐复合索引: (currency, order_status, pay_time, pay_method)
      • currency、order_status 为等值过滤,放前可高效定位
      • pay_time 为范围条件,放在等值条件之后有利于范围扫描
      • pay_method 用于 GROUP BY,可减少回表排序/分组的代价
    • 若该查询频繁且对延迟敏感,可考虑覆盖索引,将 pay_amount 也放入索引末尾:
      • (currency, order_status, pay_time, pay_method, pay_amount)
      • 注意:覆盖索引更宽,会增加写入成本与存储占用,需权衡。
  • PostgreSQL 可选优化:
    • 部分索引(Partial Index):在 CNY 且状态为已支付集合上建索引,缩小索引规模
      • CREATE INDEX ON order_master (pay_time, pay_method) WHERE currency='CNY' AND order_status IN ('paid','shipped','completed');
  • 分区与数据冷热分离:
    • 若订单量很大,建议按日期对表进行分区(如按月),近30天查询可实现分区裁剪。
  • 执行计划检查:
    • 确认使用索引范围扫描而非全表扫描(EXPLAIN/EXPLAIN ANALYZE)。
    • 确认未发生不必要的 filesort 与临时表开销(MySQL)。

使用注意事项

  • 字段确认:请确认支付时间列(示例为 pay_time)与支付金额列(示例为 pay_amount)的实际名称与含义(是否含税、是否含优惠、是否含退款),避免口径偏差。
  • 时区口径:确保 pay_time 时区与 NOW() 一致;跨时区部署需统一至同一时区(如 UTC)。
  • 空值处理:当前语句会保留 pay_method 为空的分组。如需剔除未知支付方式,可追加 AND om.pay_method IS NOT NULL。
  • 退款/逆向单:若需扣除退款或仅计算净 GMV,应在条件或金额口径上明确处理(例如排除已全额退款订单,或用净入账金额字段)。
  • 安全与权限:仅统计聚合结果,无敏感个人信息字段,符合数据最小化原则。请确保执行账号仅具备只读权限。

查询需求分析

  • 目的:找出在指定仓库(WH_EAST)中,处于启用状态(active)的SKU里,当前库存低于安全库存的记录,用于库存预警与补货决策。
  • 输出字段:sku_id、仓库、类目、当前库存、安全库存、缺口量(安全库存-当前库存)、最近入库时间。
  • 过滤条件:warehouse='WH_EAST';sku_status='active';safety_stock>0;current_stock<safety_stock。
  • 排序:按缺口量降序;若缺口量相同,则按最近入库时间升序(空值排在最后)。

注:以下SQL对常见关系型数据库(MySQL、PostgreSQL、SQL Server、Oracle)均通用。如实际列名与示例不完全一致,请按实际列名替换(如last_inbound_time/recent_inbound_time、category/类别等)。

SQL查询语句

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;

查询逻辑说明

  • 字段选择:
    • 直接返回sku_id、warehouse、category、current_stock、safety_stock。
    • 通过表达式(safety_stock - current_stock)计算缺口量并命名为shortage。
    • 将last_inbound_time返回并命名为recent_inbound_time,便于阅读。
  • 过滤条件:
    • warehouse='WH_EAST'限定仓库范围。
    • sku_status='active'仅查询在架/启用的SKU。
    • safety_stock>0剔除无安全库存要求的SKU。
    • current_stock<safety_stock筛出低于安全库存阈值的SKU。
  • 排序规则:
    • 首先按缺口量shortage降序,优先显示缺口大的SKU。
    • 缺口量相同的SKU再按最近入库时间升序排(更早入库的在前)。
    • 使用CASE WHEN last_inbound_time IS NULL THEN 1 ELSE 0 END将空时间排在最后,确保跨数据库一致性。

性能建议

  • 索引建议(按通用优先级):
    1. 为等值过滤列建立复合索引,提高选择性过滤效率:
      • CREATE INDEX idx_pi_wh_status ON product_inventory (warehouse, sku_status);
    2. 若数据量较大,且current_stock与safety_stock常用于该类对比,可考虑增加覆盖或辅助索引,便于回表成本降低:
      • PostgreSQL/SQL Server(支持包含列):
        • CREATE INDEX idx_pi_wh_status_ss_cs ON product_inventory (warehouse, sku_status) INCLUDE (safety_stock, current_stock, category, last_inbound_time);
      • MySQL:
        • CREATE INDEX idx_pi_wh_status_ss_cs ON product_inventory (warehouse, sku_status, safety_stock, current_stock);
        • 视主键与存储引擎情况评估是否需要调整列顺序以匹配常见过滤路径。
    3. 若该类预警查询十分高频,考虑新增生成列/物化列shortage = safety_stock - current_stock,并建立索引:
      • 例如:CREATE INDEX idx_pi_wh_status_shortage ON product_inventory (warehouse, sku_status, shortage);
      • 这样既可加速过滤(shortage>0)也有利于按shortage排序。
  • 统计信息与执行计划:
    • 定期更新统计信息(ANALYZE/UPDATE STATISTICS)以确保优化器选择合适的执行计划。
    • 首次上线后使用EXPLAIN/EXPLAIN ANALYZE检查是否命中索引、回表次数与排序代价。
  • 排序优化:
    • 若生成列shortage已建立索引,可在ORDER BY中直接使用该列,减少排序代价。
    • 大数据量分页时建议结合索引游标或键集分页(例如按shortage、last_inbound_time进行seek)替代大offset。

使用注意事项

  • 列名核对:如果实际列名与示例不同(如last_inbound_time/recent_inbound_time、category/类目、sku_status等),请按实际表结构替换。
  • 空值处理:
    • 若current_stock可能为NULL且业务上应视为0,请将条件与计算改为:COALESCE(current_stock, 0) < safety_stock;并在SELECT中使用(safety_stock - COALESCE(current_stock, 0))。
  • 数据类型:
    • 确保current_stock与safety_stock为数值类型(整数或数值),避免隐式类型转换导致索引失效。
  • 权限与安全:
    • 执行查询的账号应仅具备对product_inventory表的只读权限,避免越权访问或数据修改风险。
  • 并发与一致性:
    • 报表/预警场景建议在可接受的隔离级别下执行(如READ COMMITTED),避免长事务锁表;如需强一致可配合快照/时间点查询能力(取决于数据库)。

示例详情

📖 如何使用

模式 1:即插即用(手动档)
直接复制参数化模版。手动修改 {{变量}} 即可快速发起对话,适合对结果有精准预期的单次任务。
加载中...
💬 模式 2:沉浸式引导(交互档)
一键转化为交互式脚本。AI 将化身专业面试官或顾问,主动询问并引导您提供关键信息,最终合成高度定制化的专业结果。
转为交互式
🚀 模式 3:原生指令自动化(智能档)
无需切换,输入 / 唤醒 8000+ 专家级提示词。 插件将全站提示词库深度集成于 Chat 输入框。基于当前对话语境,系统智能推荐最契合的 Prompt 并自动完成参数化,让海量资源触手可及,从此彻底告别“手动搬运”。
安装插件
🔌 发布为 API 接口
将 Prompt 接入自动化工作流,核心利用平台批量评价反馈引擎,实现"采集-评价-自动优化"的闭环。通过 RESTful 接口动态注入变量,让程序在批量任务中自动迭代出更高质量的提示词方案,实现 Prompt 的自我进化。
发布 API
🤖 发布为 Agent 应用
以此提示词为核心生成独立 Agent 应用,内嵌相关工具(图片生成、参数优化等),提供完整解决方案。
创建 Agent

🕒 版本历史

当前版本
v2.1 2024-01-15
优化输出结构,增强情节连贯性
  • ✨ 新增章节节奏控制参数
  • 🔧 优化人物关系描述逻辑
  • 📝 改进主题深化引导语
  • 🎯 增强情节转折点设计
v2.0 2023-12-20
重构提示词架构,提升生成质量
  • 🚀 全新的提示词结构设计
  • 📊 增加输出格式化选项
  • 💡 优化角色塑造引导
v1.5 2023-11-10
修复已知问题,提升稳定性
  • 🐛 修复长文本处理bug
  • ⚡ 提升响应速度
v1.0 2023-10-01
首次发布
  • 🎉 初始版本上线
COMING SOON
版本历史追踪,即将启航
记录每一次提示词的进化与升级,敬请期待。

💬 用户评价

4.8
⭐⭐⭐⭐⭐
基于 28 条评价
5星
85%
4星
12%
3星
3%
👤
电商运营 - 张先生
⭐⭐⭐⭐⭐ 2025-01-15
双十一用这个提示词生成了20多张海报,效果非常好!点击率提升了35%,节省了大量设计时间。参数调整很灵活,能快速适配不同节日。
效果好 节省时间
👤
品牌设计师 - 李女士
⭐⭐⭐⭐⭐ 2025-01-10
作为设计师,这个提示词帮我快速生成创意方向,大大提升了工作效率。生成的海报氛围感很强,稍作调整就能直接使用。
创意好 专业
COMING SOON
用户评价与反馈系统,即将上线
倾听真实反馈,在这里留下您的使用心得,敬请期待。

试用后开通会员即可无限使用

加载中...