mySQL:给定2列数据,找到第3列,然后基于第2列找到AVG()第3列

时间:2018-12-04 01:05:01

标签: mysql sql select average

我有3列,staffNamedateOfIncidentincidentNo。我正在寻找'total incidents',这将是我从dateOfIncident得到的特定工作人员在特定年份的事件总数。现在,我必须找到“事件总数”的平均值,最后提供标题:

staffName | avgIncidents

到目前为止,我的是:

SELECT l.staffName, l.dateOfIncident, COUNT(l.incidentNo) AS avgIncidents
FROM incidentsR l  

哪个显示:

staffName | dateOfIncident | avgIncidents
....      | .....          | ....

尽管这显然提供了3列输出,但到目前为止,我只能计算事件的总数,然后需要使用该事件来计算avg

我需要帮助的是如何从名称和日期的前两列中获取信息,以找到该年特定人员的'total incidents'。然后针对每个staffName计算出我们拥有员工数据的年份中'total incidents'数量的平均值。

1 个答案:

答案 0 :(得分:0)

您的查询将是:

SELECT l.staffName, year(l.dateOfIncident) as year,
       COUNT(*) as incidentsPerYear
FROM incidentsR l  
GROUP BY l.staffName, year(l.dateOfIncident);

要获取员工的平均年薪,您可以可以使用子查询。或直接进行计算:

SELECT l.staffName,,
       COUNT(*) / COUNT(DISTINCT year(l.dateOfIncident))as avgIncidentsPerYear
FROM incidentsR l  
GROUP BY l.staffName;