【问题标题】:mySQL: Given 2 column data, find 3rd column and then AVG() 3rd column based on 2nd columnmySQL:给定 2 列数据,找到第 3 列,然后根据第 2 列 AVG() 第 3 列
【发布时间】:2018-12-04 01:05:01
【问题描述】:

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

我需要帮助的是如何从姓名和日期的前 2 列中获取信息,以找到该特定人员当年的 'total incidents'。然后为每个staffName 计算我们拥有员工数据的年份'total incidents' 数量的平均值。

【问题讨论】:

  • 可以使用GROUP BY功能
  • 你想要的输出是什么?请添加示例数据..

标签: mysql sql select average


【解决方案1】:

您的查询将是:

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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-11
    • 2019-09-12
    • 1970-01-01
    • 2016-10-20
    • 2014-04-08
    相关资源
    最近更新 更多