【问题标题】:SQL Average Multiple ColumnsSQL 平均多列
【发布时间】:2015-01-05 17:03:53
【问题描述】:

您将如何计算多列和多行的平均值?

到目前为止我的代码是:

SELECT b.id, r.id, b.name, r.business_id, (r.service + r.value + r.quality) / 3 AS average 
                        FROM business b
                        LEFT JOIN rating r ON r.business_id = b.id

我想获得 r.service、r.value 和 r.quality 的平均值,并结合 business_id 列。

所以我应该得到: business_id = 平均:9.42(例如)

【问题讨论】:

  • 我建议查看Aggregate Functions
  • 所以在您给出的示例中,您希望获得 business_id 的平均值(所以最终只有一列 business_id 1 的平均值为 8.83335 )
  • 9.42从何而来?
  • 9.42 只是一个随机数抱歉 - 我想要的是获得每个商家 ID 的合并平均值
  • @Argod 是正确的 :)

标签: php sql average rows


【解决方案1】:

聚合函数 AVG 应该采用一个表达式进行聚合,所以这应该可以工作:

SELECT b.name, r.business_id, AVG((r.service + r.value + r.quality)/3)
FROM business b
    LEFT JOIN rating r ON r.business_id = b.id
GROUP BY b.name, r.business_id
LIMIT 0,30

【讨论】:

  • 看起来很有希望,但我得到以下信息:#1241 - 操作数应包含 1 列
  • 您现在可以试试吗 - 我对其进行了编辑,以便将 AVG() 中的逗号替换为 + 符号(我确信这就是原始回答者的意思)。
  • 啊!现在完美运行!我在 AVG 末尾添加了 AS 平均值,所以我可以按平均值排序。谢谢@DavidFaber!
猜你喜欢
  • 2014-08-15
  • 2018-07-12
  • 1970-01-01
  • 2023-01-31
  • 1970-01-01
  • 1970-01-01
  • 2013-07-06
  • 1970-01-01
相关资源
最近更新 更多