【问题标题】:Using Aggregate function in where clause and a different column criteria在 where 子句和不同的列条件中使用聚合函数
【发布时间】:2013-08-21 15:51:43
【问题描述】:
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

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

如果有任何数量超过平均值的两倍,我需要消除。

谢谢 Xplr

【问题讨论】:

  • 你的问题是?
  • 运行此 sql 时出现错误。我只需要在 2 个标准上找到一列的平均值(a)我想选择特定项目代码的行和(b)采购订单数量应该小于平均值的两倍

标签: sql function average


【解决方案1】:

在检查聚合函数(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)

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

    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

【讨论】:

  • 这会给我不止一个。我只想要整个列表的一个平均返回值。
  • 通过将 * 替换为 Avg([PO_Order_Qty]) 作为 totalAverage,我得到了唯一的返回值。并得到了答案。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多