sql - 需要 TSQL 请求
问题描述
任务听起来是这样的:选择下一个开店的前10个城市
栏目:城市 | 优先权
优先级定义为城市内的买家数量 城市内不应有店铺。
初步错误决定:
SELECT
City,
COUNT(1) as [Priority]
FROM
Sales.vIndividualCustomer
GROUP BY City
EXCEPT
SELECT
City,
COUNT(1) as [Priority]
FROM
Purchasing.vVendorWithAddresses
GROUP BY City
ORDER BY [Priority] DESC
GO
结果:我一开始计算优先级,唯一性就消失了。也许还有另一种方式?
PS:用作Microsoft的AdventureWorks2016数据库。
解决方案
您可以使用NOT EXISTS
子查询
SELECT
ic.City,
COUNT(1) as [Priority]
FROM
Sales.vIndividualCustomer ic
GROUP BY
ic.City
HAVING NOT EXISTS (SELECT 1
FROM
Purchasing.vVendorWithAddresses va
WHERE
va.City = ic.City)
ORDER BY [Priority] DESC;
请注意,如果您希望引用聚合列,则
NOT EXISTS
必须在WHERE
not aHAVING
推荐阅读
- c++ - 关于比特流可能的未来 C++ 语言或标准库功能的一般问题
- c# - 在另一个列表视图的项目中单击事件后加载列表视图的数据
- javascript - 在 JavaScript 中“解构”之后,必须重新创建对象吗?
- r - 尝试创建新的 R 项目时,Visual Studio 2017 Professional 重新启动
- r - R 3.4.1 中的 makeBinnedCountsFile 函数错误
- powershell - Powershell - 按日期和名称过滤
- google-api - 尝试从 Google Drive v2 API 打开文件时出现 CORS 错误
- google-cloud-platform - 在 Google Cloud Platform 中设置 jupyter notebook
- python - 使用正则表达式 python 由 `|` 分隔的标签中的错误
- html - CSS div溢出问题的最佳解决方案是什么?