sql - SQL Server 需要找到提供最不同产品的供应商
问题描述
我有两张表我需要从中获取信息,Products
并且Suppliers
. 这两个表都有一个SupplierID
列,我试图用它来将它们连接在一起以检索正确的信息。
我需要的输出是SupplierID
和ContactName
来自Suppliers
表。正确的输出应该只包含两个供应商,所以我尝试了这样的事情,但是在将 nvarchar 值转换为数据类型 int 时遇到了转换错误。我不应该计算他们提供了多少产品,但聚合函数对我来说似乎是最好的方法。
SELECT TOP 2 ContactName, COUNT(Products.SupplierID) AS Supply
FROM Products
LEFT JOIN Suppliers ON Suppliers.ContactName = Products.SupplierID
GROUP BY Products.SupplierID, Suppliers.ContactName
ORDER BY Supply;
我尝试了许多不同的查询,但没有一个会起作用。我对如何加入这些表而不遇到错误感到困惑。所有产品也有一个唯一的 ProductID。正确的输出应该是这样的:
7 John Smith
12 John Sample
解决方案
这两个表都有一个 SupplierID 列,我试图用它来将它们连接在一起以检索正确的信息
如果是这样,您应该跨表加入该列。
此外,使用表别名并在每列前面加上它所属的表是一个很好的做法。
另一句话是,如果您想要销售最多不同产品的供应商,那么您希望按降序(而不是升序)排序。
最后,如果你想left join
,那么你应该从供应商开始,然后引进产品,而不是相反。
考虑:
select top 2
s.SupplierID,
s.ContactName,
COUNT(*) as Supply
from Suppliers s
left join Products p on p.SupplierID = s.SupplierID
group by s.SupplierID, s.ContactName
order by Supply desc;
推荐阅读
- python - 为什么我要在 Python 中使用 zip()?
- python - 使用 Python 和 Pandas 将合并症数据转换为表格时遇到问题
- javascript - 无法使用 react-native 加载特定网站的图像
- json - 如何使用 kotlinx 在 Kotlin 上使用未知键迭代 JsonElement?
- python - 如何将 SQL 中的一列数据转换为 python 中的列表?
- python - 如何在张量流中逐行旋转张量?
- azure-devops - DevOps:如何在拉取请求中正确使用分支过滤器
- nginx - nginx - OpenShift pod 中未应用日志格式
- javascript - 正则表达式或运算符的奇怪之处
- c# - 在 C# 中以编程方式将 .crt + .key 文件转换为 X509Certificate2