不确定这是否可行,但我有以下内容
SELECT SUM(rating) as rating FROM details WHERE client_id = '$id'
Run Code Online (Sandbox Code Playgroud)
这rating列包含用户的个人评分(1、2、3、4、5)星。我需要将它们全部相加才能计算平均值,但我也想知道用户获得的每个分隔符有多少颗星。
例如
该用户有3条记录,评分为(3,4,3)。对 3 条记录中的 10 条进行总和,我得到的平均值是 3.3。但我也愿意
3 stars = 2
4 stars = 1
Run Code Online (Sandbox Code Playgroud)
是否可以通过一个查询来完成此操作?
如果我的问题正确,您可以使用 AVG() 函数而不是 SUM()。
在下面的查询中,它计算 this 的平均评分client_id,还根据问题的要求计算每个星星的数量。
SELECT
AVG(rating) as rating,
COUNT(CASE WHEN rating=1 THEN 1 END) as star_1,
COUNT(CASE WHEN rating=2 THEN 1 END) as star_2,
COUNT(CASE WHEN rating=3 THEN 1 END) as star_3,
COUNT(CASE WHEN rating=4 THEN 1 END) as star_4,
COUNT(CASE WHEN rating=5 THEN 1 END) as star_5
FROM
details
WHERE
client_id = ID_HERE
GROUP BY
client_id
Run Code Online (Sandbox Code Playgroud)