SQL,基本查询

时间:2014-05-20 20:22:09

标签: sql sql-server

我目前正在为我在SQL中使用Northwind数据库的数据库类开发实验室。我似乎无法弄清楚的一些问题是

  

列出单价大于的所有产品的名称   平均单价。

我认为它看起来像

Select Product Name From Products Where UnitPrice > AVG(UnitPrice)

但它似乎并不接受这一点。

另外,另一个问题是

  

列出单价最低的产品名称

我以为它会是

Select ProductName From Product Where MIN(UnitPrice) 

这些都不起作用,我非常沮丧,请帮忙!

4 个答案:

答案 0 :(得分:2)

您不能将组函数放入WHERE子句中。可以这样想:WHERE子句中的表达式必须只引用表的一行(或者来自多个表的行的连接)。但表达式不能考虑一组行。

相反,您可以使用子查询来获得平均价格:

Select p.ProductName 
From Products As p
Cross Join (Select AVG(UnitPrice) AS avg_unit_price From Products) As a
Where p.UnitPrice > a.avg_unit_price

答案 1 :(得分:1)

列出单价高于平均单价的所有产品的名称:


Select p.ProductName 
       From Products p
       Where p.UnitPrice > (Select AVG(UnitPrice) From Products)

列出单价最低的产品名称: (返回所有具有最少UnitPrice的产品)


Select p.ProductName 
       From Products p
       Where p.UnitPrice = (Select MIN(UnitPrice) From Products)


答案 2 :(得分:0)

Select a.[Product Name]
From Products a, (select AVG(UnitPrice) as AvgUnitPrice from Products) b
Where a.UnitPrice > b.AvgUnitPrice

Select a.[Product Name]
From Products a
Where a.UnitPrice > (select AVG(UnitPrice) as AvgUnitPrice from Products)

答案 3 :(得分:0)

Declare @Avg Decimal
Select  @Avg = Sum(UnitPrice) / Count(UnitPrice)
        From Products

Select A.ProductName
       From Products
       Where UnitPrice > @Avg