SQL查询,用于查找上个月售出的最昂贵的汽车
我对SQL中的查询有问题。我需要生成的查询是输出上个月售出的最昂贵汽车的详细信息 到目前为止,我的SQL代码如下:SQL查询,用于查找上个月售出的最昂贵的汽车,sql,ms-access,Sql,Ms Access,我对SQL中的查询有问题。我需要生成的查询是输出上个月售出的最昂贵汽车的详细信息 到目前为止,我的SQL代码如下: SELECT CarMake, MAX(CFSSellingPrice) AS ['PriceOfCar'] FROM CarForSale WHERE CFSSoldDate BETWEEN CVDATE('01/02/2013') AND CVDATE('01/03/2013') GROUP BY CarMake; 我遇到的问题是,它生产了不止一辆汽车,而且在过去一个月里没有
SELECT CarMake, MAX(CFSSellingPrice) AS ['PriceOfCar']
FROM CarForSale
WHERE CFSSoldDate BETWEEN CVDATE('01/02/2013') AND CVDATE('01/03/2013')
GROUP BY CarMake;
我遇到的问题是,它生产了不止一辆汽车,而且在过去一个月里没有生产出最昂贵的汽车
任何帮助都将不胜感激,即使有人能为我指明正确的方向
谢谢你抽出时间
Alyn:)您的查询包含,所以我猜您使用的是MS Access。如果是这样,您可以使用top 1
查找售出的最昂贵的汽车:
SELECT top 1 CarMake
, CFSSellingPrice
FROM CarForSale
WHERE CFSSoldDate BETWEEN CVDATE('01/02/2013') AND CVDATE('01/03/2013')
order by
CFSSellingPrice desc
使用
Top
关键字
SELECT Top 1 CarMake, MAX(CFSSellingPrice) AS ['PriceOfCar']
FROM CarForSale
WHERE CFSSoldDate BETWEEN CVDATE('01/02/2013') AND CVDATE('01/03/2013')
GROUP BY CarMake;
试试下面的方法
SELECT CarMake, MAX(CFSSellingPrice) AS ['PriceOfCar']
FROM CarForSale
WHERE CFSSoldDate BETWEEN CVDATE('01/02/2013') AND CVDATE('01/03/2013');
不要使用
分组依据
关键字…此查询将提供所有记录,例如,如果有汽车制造商转向具有相同的销售价格,并且价格范围中的最高价格
SELECT CarMake, CFSSellingPrice
FROM CarForSale
WHERE CFSSellingPrice =
(
SELECT TOP 1 CFSSellingPrice
FROM CarForSale
WHERE CFSSoldDate BETWEEN CVDATE('01/02/2013') AND
CVDATE('01/03/2013')
ORDER BY CFSSellingPrice
)
以下内容对我很有用(使用format()对汽车和销售进行分组,并在WHERE子句中创建一个子查询) 还有一个额外的好处就是可以跨越几个月
SELECT
format(cfs.CFSSoldDate,"yyyy mm") AS SoldMonth
, cfs.CarMake
, MAX(CFSSellingPrice) AS PriceOfCar
FROM CarsForSale AS cfs
WHERE
cfs.CFSSoldDate BETWEEN #1/1/2013# AND #3/31/2013#
AND cfs.CFSSellingPrice = (SELECT
max(c.CFSSellingPrice) FROM CarsForSale AS c
WHERE format(c.CFSSoldDate, "yyyy mm") = format(cfs.CFSSoldDate, "yyyy mm"))
GROUP BY
format(cfs.CFSSoldDate, "yyyy mm"), cfs.CarMake
你在用什么
RDBMS
代表关系数据库管理系统RDBMS是SQL
的基础,对于所有现代数据库系统,如MS SQL Server、IBM DB2、Oracle、MySQL等,都要小心日期被误解为月、日、年。通常情况下,最好以年、月、日的格式输入日期,以避免歧义。top
如果没有order by
就没什么用了,谢谢你,穆罕默德,这很好,也很有效。非常感谢您的帮助。感谢您的回复Mehul,但现在我发现“CarMake”的错误不是aggregate函数的一部分。哦。。你得到了答案。。刚果祝你好运……)您是否考虑过可能存在重复记录?例如,两个或两个以上的汽车制造商以每辆50万美元的价格销售了一辆汽车(恰好是最高的销售价格),并且在您的日期范围内。在Accesstop
中包括领带,不需要subquery@Andomar哦,真的吗?所以它就像sql server中的TOP WITH TIES
?注意,MS Access在TOP中包含匹配项。