【发布时间】:2020-01-12 00:21:29
【问题描述】:
我有两张桌子 - Brand 和 Auto。
Brand 包含有关汽车品牌的信息。以下是列:
BrandId
BrandName
BrandCountry
Auto 包含有关特定型号的信息。列:
AutoId
AutoModel
BrandId
Price
Brand.BrandId = Auto.BrandId.
我的任务是展示每个品牌的最高价格的汽车模型。
这是我用来在没有汽车模型的情况下显示品牌和最高价格的查询(并且有效):
SELECT Brand.BrandName, MAX(Price)
FROM Brand
INNER JOIN Auto ON Brand.BrandId = Auto.BrandId
GROUP BY Brand.BrandName
问题是它没有显示模型,我还需要显示模型名称。我尝试将其附加到这样的选择查询中:
SELECT Brand.BrandName, Auto.AutoModel, MAX(Price)
FROM Brand
INNER JOIN Auto ON Brand.BrandId = Auto.BrandId
GROUP BY Brand.BrandName
我得到了错误
选择列表中的“Auto.AutoModel”列无效,因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
我怎样才能做到这一点?
请帮助使用正确的 SQL Server 语法来解决问题。
【问题讨论】:
-
错误在这里告诉你问题。您不了解错误怎么办,我们可以详细说明。
-
您必须将所有列(不在聚合函数中)添加到 group by 子句。例如。
SELECT Brand.BrandName, Auto.AutoModel, MAX(Price) FROM Brand INNER JOIN Auto ON Brand.BrandId = Auto.BrandId GROUP BY Brand.BrandName, Auto.AutoModel -
这也是您在last question 中遇到的错误。你应该花时间去理解你的答案;否则你什么也学不到。
-
ljcordero,如果我将 Automodel 放入 Group By,结果将显示包含所有汽车的整个列表,我只需要那些具有最高价格的汽车。不过谢谢你的回答。
标签: sql sql-server