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

AdventureWorks2016环境下TSQL查询新店开设Top10优先城市问题求解

错误原因分析
  • 原语句使用EXCEPT时会对两个查询返回的**整行(City + Priority)**做全匹配排除,仅当「城市名称+买家数量」同时和有门店城市的统计结果完全一致时才会被剔除,不符合「只要城市存在已开门店就排除」的需求,自然会出现城市唯一性失效、结果错误的问题。
正确TSQL实现
SELECT TOP 10
    City,
    COUNT(1) AS [Priority]
FROM Sales.vIndividualCustomer c
WHERE NOT EXISTS (
    -- 过滤已有门店的城市
    SELECT 1 
    FROM Purchasing.vVendorWithAddresses v 
    WHERE v.City = c.City
)
GROUP BY City
ORDER BY [Priority] DESC
GO
逻辑说明
  • 先通过NOT EXISTS过滤所有在门店地址视图中出现过的城市,保证入选城市无已开设门店
  • 对符合条件的城市按买家数量统计得到Priority
  • 按Priority倒序排序后取前10个结果,完全匹配需求
  • 优先使用NOT EXISTS而非NOT IN,可以避免NULL值引发的逻辑异常,兼容性更高

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 08:45:07