我有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'
数量的平均值。
答案 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;