You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL查询语法审核:获取Q1符合条件的账户邮箱地址

SQL语句审核与修正建议

原需求回顾

现有两张表:

  • Accounts表:包含account_name、account_id、account_email_addresses字段
  • Opportunities表:包含opp_id、account_id、opp_stage、created_date、close_date、mrr(月度经常性收入)字段

需要查询满足以下条件的账户邮箱地址列表:

  • 商机状态为Open
  • 年度经常性收入≥10000美元(通过mrr * 12计算)
  • 商机关闭日期在2023年第一季度内

原SQL的错误点

  1. NOT逻辑语法与逻辑错误
    原语句WHERE NOT opp_stage 'Closed Won' OR 'Closed Lost'完全不符合SQL语法:
  • 缺少比较运算符,不能直接写opp_stage 'Closed Won'
  • 逻辑上,你想表达“商机状态不是Closed Won或Closed Lost”,但OR的优先级低于NOT,会导致逻辑混乱。更直接的写法是直接判断opp_stage = 'Open'(符合你的需求),或者用opp_stage NOT IN ('Closed Won', 'Closed Lost')。
  1. 字段与数值格式错误
  • 'mrr' * 12里的单引号会把mrr识别成字符串而非字段,应该去掉单引号,写成mrr * 12
  • 数值10,000里的逗号是非法格式,SQL中数字不能加千分位逗号,要写成10000
  1. 字段名不匹配
    原SELECT语句里的account_email_address,和Accounts表的字段account_email_addresses(末尾多了个s)不一致,会导致字段不存在的错误。

  2. JOIN类型不合理
    使用RIGHT JOIN会包含所有符合条件的商机,即使该商机没有关联的账户(此时邮箱会为NULL),但你需要的是账户邮箱列表,更合理的是用INNER JOIN,只保留有对应账户的商机记录。

修正后的SQL语句

SELECT a.account_email_addresses, a.account_id
FROM Accounts a
INNER JOIN Opportunities o
  ON a.account_id = o.account_id
WHERE o.opp_stage = 'Open'
  AND o.close_date BETWEEN '2023-01-01' AND '2023-03-31'
  AND o.mrr * 12 >= 10000;

注:日期格式建议用'YYYY-MM-DD',避免不同数据库的解析差异;给表加别名(a、o)让语句更简洁。

内容的提问来源于stack exchange,提问作者eric_harper

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 01:36:30