【问题标题】:SQL with condition on calculated value带有计算值条件的 SQL
【发布时间】:2011-06-28 10:39:50
【问题描述】:

我有一张表格,上面有产品、数量和价格。我需要选择每篇文章的平均价格在一个范围之间的所有条目。 到目前为止我的查询:

SELECT productid,AVG(SUM(price)/SUM(amount)) AS avg 
FROM stock WHERE avg>=$from AND avg<=$to GROUP BY productid

如果这样做,它告诉我 avg 不存在。 此外,我显然需要分组,因为总和和平均值需要按每瓶葡萄酒计算

【问题讨论】:

  • 你想在这里做什么? AVG(SUM(price)/SUM(amount))

标签: mysql group-by conditional-statements


【解决方案1】:

你需要把它放在HAVING 子句中。您不能使用 WHERE 按聚合结果进行过滤。

MySQL 确实允许您在 HAVING 中引用列别名。你可能需要

SELECT 
      productid,
      AVG(price/amount) AS avg ,
      /*SUM(price)/SUM(amount) AS avg (<--- Or perhaps this?)*/
FROM stock 
GROUP BY productid
HAVING avg>=$from AND avg<=$to 

但我不确定你到底想用AVG(SUM(price)/SUM(amount))做什么你能展示一些示例数据吗?

【讨论】:

    猜你喜欢
    • 2021-06-21
    • 1970-01-01
    • 1970-01-01
    • 2022-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-03
    相关资源
    最近更新 更多