我有三列,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;