查找每个用户的平均分数 - Mysql

Find Average Mark For Each User - Mysql

第一个 table :

UserId UserName 1 User1 2 User2 3 User3 4 User4

第二个Table

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

我有这两个table。我需要一个查询来获得每个用户在英语、能力和技术方面的平均分数。应该只计算状态 F 的平均值。结果应该是这样的

UserId AptitudeAverage EnglishAverage TechnicalAverage 1 0 30 0 2 0 50 0 3 45 0 50 4 0 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;

这可能对您有所帮助。

这里是 fiddle.

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