2011-07-26 31 views
1

好了,所以我有具有以下行的數據庫,其中包含什麼用戶評級問題(其評級腳本 - 這是所有成品,Q1一路Q20):MySQL查詢&PHP - 如何做到這一點?

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

平均評級風景= 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

示例:因此您的意思是用戶1和用戶2,都分別投問問題2:4和5。所以數學是總分/評分數=平均數。回聲該問題的平均分數? – 422

回答

2

你可以用MYSQL做到這一點:

SELECT AVG(q1) as accommodation, AVG(q2) as scenery, AVG(q3) as food FROM my_table GROUP BY sid 

等。

0

要在sid得到平均值,組行和使用AVG功能

SELECT sid,AVG(q1) AS q1,AVG(q2) AS q2,[...] FROM <RATING_TABLE> GROUP BY sid