mySQL:给定2列数据,找到第3列,然后根据第2列找到AVG()第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'数量在我们有员工数据的年份的平均值。

您的查询将是:

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;

最新更新