[英]SQL GROUP_CONCAT + SUM + AVG
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编译查询的方式(由于使用的是GROUP_CONCAT,因此我假设使用MySQL),因此无法在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,而不是串联的结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.