我的平均值在 where 和 SQL 中都不起作用

Posted

技术标签:

【中文标题】我的平均值在 where 和 SQL 中都不起作用【英文标题】:My average didnt work both in where and having SQL 【发布时间】:2020-10-20 15:46:03 【问题描述】:

所以我必须为价格超过所有产品平均价格的所有产品显示产品名称、产品 ID 和单价。这是我的查询

select ProductID, ProductName, UnitPrice
from Products
where UnitPrice in
(select UnitPrice
from Products
where avg(UnitPrice)> UnitPrice)

但是我得到的是错误,因为聚合平均(单价),当我用它的原因错误替换它时。我该怎么办?

【问题讨论】:

Edit 你的帖子要完整引用错误,而不是解释它们。 您无法编写任何您想要的 SQL 代码,并期望 SQL Server 能够正确理解和执行它。大概先学点SQL语法吧。 【参考方案1】:

您可以为此使用窗口函数而不是子查询:

select *
from (
    select ProductID, ProductName, UnitPrice, avg(unitPrice) over() avgUnitPrice
    from Products
) p
where UnitPrice > avgUnitPrice

【讨论】:

@SteveC:你认为我的代码需要修复什么?【参考方案2】:

我认为您正在寻找类似的东西

with avg_cte(avg_price) as (
    select avg(UnitPrice)
    from Products)
select ProductID, ProductName, UnitPrice
from Products p
     cross join avg_cte a
where p.UnitPrice>a.avg_price;

【讨论】:

【参考方案3】:

所以我必须为所有价格超过所有产品平均价格的产品显示产品名称、产品id和单价。

关闭。使用子查询返回平均值并将其用于比较:

select ProductID, ProductName, UnitPrice
from Products p
where UnitPrice > (select avg(UnitPrice) from Products);

【讨论】:

我没有得到答案,结果为空 @JessicaMaya 。 . .首先,返回三列的查询不会返回NULL。其次,如果UnitPrice 相同或NULL 在每一行上,此查询只能返回UnitPrice 的所有行。

以上是关于我的平均值在 where 和 SQL 中都不起作用的主要内容,如果未能解决你的问题,请参考以下文章

HTML5 视频在任何浏览器中都不起作用

“-webkit-”(一个CSS属性)在除了谷歌浏览器之外的任何浏览器中都不起作用[关闭]

WSO2 EI 6.3.0 - Jms,vfs,mailto和本地传输在除carbon.super之外的任何租户中都不起作用

ssh 密钥登录在 Ubuntu 和 CentOS 7 中都不起作用

WHERE 语句在应该更新数据的 SQL 中不起作用[关闭]

Sql where子句不起作用