mysql:给定2列数据,找到第3列,然后根据第2列找到avg()第3列

zz2j4svz  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(356)

我有三个专栏, 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' 这些年来,我们有员工的数据。

ncecgwcz

ncecgwcz1#

您的问题是:

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;

相关问题