好的,所以我有一个包含以下行的数据库,其中包含问题的用户评级(评级脚本 - 全部完成,q1一直到q20):
id
sid
q1
q2
q3
q4
q5
...
q19
q20
表格形象: http://i.stack.imgur.com/SM70j.jpg
以下是示例行A:
id 1
sid 2447
q1 1.5
q2 2.5
q3 0.5
q4 4.5
q5 3.5
...
q19 2.0
q20 2.0
以下是B行示例:
id 2
sid 2447
q1 2.5
q2 1.5
q3 1.5
q4 3.5
q5 4.5
...
q19 1.0
q20 1.0
基本上,我想要一个执行以下操作的查询:
它计算数据并按sid
对其进行分组,我希望所有q1到q20行都加起来:
因此q1将为4,q2将为4,q3将为2,依此类推。
然后我想将它们除以有多少行,所以q1将变为2,q2将变为2,q3将变为1,依此类推。 (获得平均数)。
我们有一个显示此信息的页面,例如:
住宿的平均评分= row1['q1'] + row2['q1'] / amt of rows
Scenery的平均等级= row1['q2'] + row2['q2'] / amt of rows
食物的平均等级= row1['q3'] + row2['q3'] / amt of rows
我有20个问题由人们评价,这是全部编码,数据全部存储。
这是为了显示页面上的数据。我现在已经开始像
了Avg rating for Accommodation
Avg rating for Scenery
Avg rating for Food
我只需要帮助做mySQL查询就可以获取total of q1 where sid = X, divided by the amt of rows for the average rating
。
然后我想将这些传递给变量,例如:
$r['question1'] = ...;
这样我们就可以做到
echo "Avg rating for Accommodation = " . $r['question1'];
很抱歉,如果我把它解释为你是愚蠢的,但我想尽可能地清楚我想要它,这样我就能得到帮助。
非常感谢任何帮助。
答案 0 :(得分:2)
您可以使用MYSQL执行此操作:
SELECT AVG(q1) as accommodation, AVG(q2) as scenery, AVG(q3) as food FROM my_table GROUP BY sid
等等。
答案 1 :(得分:0)
要获得平均值,请对sid
上的行进行分组,然后使用AVG
函数
SELECT sid,AVG(q1) AS q1,AVG(q2) AS q2,[...] FROM <RATING_TABLE> GROUP BY sid