2014-02-15 205 views
0

我不断遇到问题。我需要得到的是前3个AVG率最高的国家。SQL帮助:查询问题

SELECT TOP 3 
    Country, AVG(AverageRate) AS 'AverageRate' 
FROM 
    dbo.CountryOrders 
WHERE 
    OrderDate BETWEEN '2011-01-01' AND '2011-12-31' 
GROUP BY 
    Country 
ORDER BY 
    'AverageRate' DESC; 
GO 
+2

有什么问题? – Joe

+2

您的数据库是否支持“TOP 3”? – qqilihq

+1

在sql server 2005/2008'ORDER BY'不能看到别名。 – Mihai

回答

0

这应该工作:

SELECT TOP 3 Country, AVG(AverageRate) AS 'AverageRate' 
FROM dbo.CountryOrders 
WHERE OrderDate BETWEEN '2011-01-01' AND '2011-12-31' 
GROUP BY Country 
ORDER BY AVG(AverageRate) DESC; 
GO 
+0

谢谢。这工作完美! – user3313555

+0

我很高兴它做到了。请接受它作为答案。 –

+0

这回答了这个问题!感谢你和@Gordon – user3313555

1

的问题是单引号AverageRate。只对字符串和日期常量使用单引号。你不需要他们在这里,所以只是将其删除:

SELECT TOP 3 Country, AVG(AverageRate) AS AverageRate 
FROM dbo.CountryOrders 
WHERE OrderDate BETWEEN '2011-01-01' AND '2011-12-31' 
GROUP BY Country 
ORDER BY AverageRate DESC; 

您查询没有下令由你是一个恒定值,字符串“AverageRate”订货。如果您需要转义标识符,请使用双引号或方括号(Sybase和SQL Server特定)。

+0

谢谢...感谢 – user3313555