SELECT *,
Group_concat(rating) AS rating_total,
Sum(rating_total) AS rating_sum,
Avg(rating_sum) AS rating_avg
FROM ratings
GROUP BY pid
由于某种原因,总和和平均值不执行....你如何使这个陈述有效?
答案 0 :(得分:5)
由于SQL编译查询的方式(我假设MySQL使用GROUP_CONCAT),因此不能在order by子句之前引用别名列名。 SUM和AVG函数不是程序性的。它们是并行完成的。这意味着他们不能依赖。
其次,GROUP_CONCAT返回一个字符串,而不是一个数字。你怎么希望SUM / AVG那个?只需SUM和AVG评级栏本身。
现在,鉴于此,你可以这样做:
SELECT
pid,
GROUP_CONCAT(rating) AS rating_total,
SUM(rating) as rating_sum,
AVG(rating) as rating_avg
FROM
rating
GROUP BY
pid
这可以帮到你找到你想要的东西。
答案 1 :(得分:0)
GROUP_CONCAT返回一个字符串,连接所有选定的valuse。然后,你试图对该字符串求和,然后你试图得到总和的平均值。
我认为您需要对表中的值使用SUM和AVG,而不是连接的结果。