我有一個數據庫表,它有三個相關的字段,首先是一個用戶ID,然後一個是提交節點的數量,另一個是每個節點的「分數」的總和。SQL計算兩個字段的平均值
我需要能夠運行一個查詢,它將返回具有最高平均分數的用戶,但我的SQL-fu不是它的可能位置。
乾杯!
我有一個數據庫表,它有三個相關的字段,首先是一個用戶ID,然後一個是提交節點的數量,另一個是每個節點的「分數」的總和。SQL計算兩個字段的平均值
我需要能夠運行一個查詢,它將返回具有最高平均分數的用戶,但我的SQL-fu不是它的可能位置。
乾杯!
下面是你需要的。重要的是要投你的int數據類型的東西,處理小數是很重要的,否則你會得到不準確的場均數據:
SELECT *, CAST(total_score AS FLOAT)/CAST(total_nodes AS FLOAT) AS average_score
FROM yourtable
ORDER BY CAST(total_score AS FLOAT)/CAST(total_nodes AS FLOAT) DESC
祝你好運!
-Michael
SELECT AVG(user.score) AS avg_score
FROM user
GROUP BY user.id
ORDER BY avg_score DESC
試試這個:
select userid,max(avgscore) as maxscore
from
(select userid,avg(score) as avgscore from usertable group by userid) mytab
Easer將
SELECT AVG(user.score1 + user.score2)/2 as average, userid FROM usertable
GROUP BY userid
ORDER BY average
注意你的數據類型。如果分數是整數,您可能首先要將平均值轉換爲小數。
你是正在尋找
-- Multiplied by 1.0 to convert it to double
Select top 100 user_id, (1.0 * total_score/total_node) as AvgScore
From YourTable
Order By (total_score/total_node) asc
每個用戶只有一行嗎? – Jacob
是的,我的字段是user_id(int),total_nodes(int)和total_score(int) – Conor
您可能想要更改問題的標題 - 所需的是_not_「兩個字段的平均值」。 –