繁体   English   中英

SQL GROUP_CONCAT + SUM + AVG

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM