mysql查询& php - 如何做到这一点?

时间:2011-07-26 04:30:57

标签: php mysql

好的,所以我有一个包含以下行的数据库,其中包含问题的用户评级(评级脚本 - 全部完成,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'];

很抱歉,如果我把它解释为你是愚蠢的,但我想尽可能地清楚我想要它,这样我就能得到帮助。

非常感谢任何帮助。

2 个答案:

答案 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