不知道这是否可能,但我有以下内容

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/

10-13 06:37