我有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;

10-06 14:14