查找每个用户的平均标记 - Mysql

时间:2015-03-16 12:02:34

标签: mysql average

第一张表:

UserId UserName 1 User1 2 User2 3 User3 4 User4

第二张表

Userid Mark Aptitude English Technical Status 1 40 1 0 0 S 1 30 0 1 0 F 2 60 0 0 1 S 2 75 0 1 0 F 2 25 0 1 0 F 3 45 1 0 0 F 3 45 1 0 0 D 3 50 0 0 1 F 3 50 0 0 1 F

我有这两张桌子。我需要一个查询来获得英语,能力和技术方面的每个用户平均分数。应该仅针对状态F计算平均值。结果应该是这样的

UserId AptitudeAverage EnglishAverage TechnicalAverage 1 0 30 0 2 0 50 0 3 45 0 50 4 0 0 0

1 个答案:

答案 0 :(得分:0)

试试这个: -

SELECT userID, IFNULL(AVG(case when Aptitude = 1 then Mark * Aptitude end), 0) AS AptitudeAverage,
               IFNULL(AVG(case when English = 1 then Mark * English end), 0) AS EnglishAverage,
               IFNULL(AVG(case when Technical = 1 then Mark * Technical end), 0) AS TechnicalAverage
FROM YOUR_TAB
WHERE Status = 'F'
GROUP BY userID;

这可能会对你有帮助。

这是小提琴。

http://sqlfiddle.com/#!9/e449f/21