我有3列staffName
,dateOfIncident
,incidentNo
。我正在寻找'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;