我如何计算平均评级并在MySQL表中添加一个新列来记录它?


How do I work out average rating and add a new column to my MySQL table to record this

我有一个产品ID的MySQL表,其中有几列显示了这些产品从我的客户那里获得1、2、3、4或5星评级的次数。我想在当前为空白的平均评级列中插入一个数字,表示每种产品的平均评级。

如何计算每个产品ID的平均评级,然后修改表以将该平均评级插入平均评级列?理想情况下,我希望每天使用php脚本和cron作业运行此SQL语句,以重新计算平均评级,并在每个产品记录更多评级时更新此表。

表格布局的示例如下:

Product ID | 1 | 2 | 3 | 4 | 5 | Average Rating
1294518    | 0 | 3 | 3 | 2 | 4 | ?
9226582    | 0 | 0 | 1 | 0 | 0 | ?
3946583    | 0 | 3 | 6 | 1 | 0 | ?
7392588    | 1 | 0 | 0 | 0 | 0 | ?
1196585    | 0 | 1 | 0 | 5 | 6 | ?
4285385    | 0 | 2 | 3 | 3 | 1 | ?

你试过了吗:

UPDATE table
SET aveRate = (rate1 + rate2*2  + rate3*3  + rate4*4 + rate5*5) /
                           (rate1 + rate2 + rate3 + rate4 + rate5)

我错过了什么吗?