在 where 子句中使用聚合函数和不同的列条件

pri*_*iya 5 sql average function

select PO_Order_Qty, Avg([PO_Order_Qty])as totalAverage 
FROM [FirstStrike_Retail].[custom].[Whse_Pricing_QR]    
where item_code ='111' and PO_order_qty <(Avg([PO_Order_Qty])*2)
group by PO_Order_Qty
Run Code Online (Sandbox Code Playgroud)

我在 MS Sql 中使用上述 sql 来获取特定商品代码订单数量的平均值。我只期望一个返回值。

我需要消除是否有任何数量高于平均值的两倍。

谢谢 Xplr

r.n*_*net 6

检查聚合函数(MAX、MIN、SUM、AVG 等)时应使用 HAVING 子句。我不想只给你答案,而是尝试这样的事情。

select PO_Order_Qty, Avg([PO_Order_Qty])as totalAverage 
FROM [FirstStrike_Retail].[custom].[Whse_Pricing_QR]    
where item_code ='111' 
group by PO_Order_Qty
HAVING PO_order_qty <(Avg([PO_Order_Qty])*2)
Run Code Online (Sandbox Code Playgroud)

编辑:根据您的评论尝试这个......类似这样

    select * 
    FROM [FirstStrike_Retail].[custom].[Whse_Pricing_QR]    
    where item_code ='111' 
      and PO_Order_Qty < 
          (select Avg([PO_Order_Qty])as totalAverage 
          FROM [FirstStrike_Retail].[custom].[Whse_Pricing_QR]) * 2
Run Code Online (Sandbox Code Playgroud)