SELECT *,
Group_concat(rating) AS rating_total,
Sum(rating_total) AS rating_sum,
Avg(rating_sum) AS rating_avg
FROM ratings
GROUP BY pid
由于某种原因,总和和平均值不执行....你如何使这个语句起作用?
SELECT *,
Group_concat(rating) AS rating_total,
Sum(rating_total) AS rating_sum,
Avg(rating_sum) AS rating_avg
FROM ratings
GROUP BY pid
由于某种原因,总和和平均值不执行....你如何使这个语句起作用?
由于 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
这应该可以为您提供所需的东西。
GROUP_CONCAT 返回一个字符串,连接所有选定的值。然后,您尝试对该字符串求和,然后您尝试获得总和的平均值。
我认为您需要对表中的值使用 SUM 和 AVG,而不是连接的结果。