不知道这是否可能,但我有以下内容
SELECT SUM(rating) as rating FROM details WHERE client_id = '$id'
rating
列包含用户(1、2、3、4、5)星的单独评分。我需要对它们全部求和才能计算出平均值,但我也想知道用户也获得了每个定界符的星数。例如
用户有3条记录,而评分是(3,4,3)。在3个记录中有10个的总和,我得到3.3的平均值。但我也想
3 stars = 2
4 stars = 1
是否可以通过一个查询执行此操作?
最佳答案
如果我的问题正确,则可以使用AVG()函数代替SUM()。
在以下查询中,它计算该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
关于mysql - 如何在一个查询中使用SUM和COUNT个mysql,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43927168/