跳到主要内容
哒哒星球DADA PLANET

Prompt · 已公开版本

检查 SQL 有没有重复计数或漏算

把SQL和业务口径一起给出,检查一对多连接、分母或过滤条件有没有让数字变样。

先看看示例

作者提供的示例,实际效果取决于你的输入和使用工具。

输入

【虚构编辑示例】
SQL:SELECT COUNT(*) FROM users u JOIN orders o ON u.id=o.user_id WHERE o.status='paid';
表:users.id唯一,一个用户可有多笔orders。
定义与方言:统计至少付过一次款的用户数,PostgreSQL。

输出

【虚构编辑示例】
这条SQL数的是匹配到的订单行。同一用户有两笔已支付订单,就会被计两次,与‘付过款的用户数’不一致。

最小改法:
SELECT COUNT(DISTINCT u.id)
FROM users u JOIN orders o ON u.id=o.user_id
WHERE o.status='paid';

构造核对样本:用户A有2笔已支付订单,用户B有1笔,预期用户数为2。先用这组数据检查去重,再与实际指标时间范围对齐。未执行此SQL。

完整提示词

对照指标定义追踪SQL每一步的数据粒度,先说明最终一行应该代表什么。重点看连接是否放大行数、过滤放在何处、去重键、时间边界和空值处理。
指出具体片段和可能偏差,再给沿用原方言的最小改法。需要示例时明确用构造数据说明;实际执行结果和业务字段含义不能凭空补。

SQL、表结构与字段含义:
{{material}}

数据库方言和指标定义:
{{context}}