Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何获得按匹配列分组的平均行数?_Mysql_Sql_Datetime_Count_Aggregate Functions - Fatal编程技术网

Mysql 如何获得按匹配列分组的平均行数?

Mysql 如何获得按匹配列分组的平均行数?,mysql,sql,datetime,count,aggregate-functions,Mysql,Sql,Datetime,Count,Aggregate Functions,我有一个赛车数据库,需要创建一个查询,以查找每年每场比赛(名称)的平均总停车次数。 每行都是一个陷阱,我已经计算了每年发生多少个陷阱 我目前的查询是: SELECT pitstopRaceName AS raceName, (SELECT AVG(COUNT(pitstopRaceDate))) AS totalPitstop FROM MoSpo_PitStop GROUP BY pitstopRaceName ,pitstopRaceDate ORDER BY pits

我有一个赛车数据库,需要创建一个查询,以查找每年每场比赛(名称)的平均总停车次数。 每行都是一个陷阱,我已经计算了每年发生多少个陷阱

我目前的查询是:

SELECT   
pitstopRaceName AS raceName,  
(SELECT AVG(COUNT(pitstopRaceDate))) AS totalPitstop  
FROM MoSpo_PitStop  
GROUP BY pitstopRaceName ,pitstopRaceDate  
ORDER BY pitstopRaceName  
结果是:

总称 全速止动器 英国大奖赛 1 英国大奖赛 6 英国GT锦标赛 '2.0000 德国大奖赛 5 德国大奖赛 1 德国大奖赛 4 意大利大奖赛 1 意大利大奖赛 5 但我需要的是所有比赛名称平均他们的总进站次数,例如英国大奖赛平均6分和1分获得3.5分,意大利大奖赛平均1分和5分获得3分,依此类推

我怀疑您需要两个级别的聚合。首先是按年份和比赛,因此我们可以计算进站次数,然后仅按比赛,以计算每场比赛的年平均数:

select race_name, avg(cnt_pitstops) as avg_pitsops_per_year
from (
    select year(pitstopracedate) as race_year,
        pitstopracename as race_name, 
        count(*) as cnt_pitstops
    from mospo_pitstop
    group by race_year, race_name
) t
但我需要的是所有比赛名称平均他们的总进站次数,例如英国大奖赛平均6分和1分获得3.5分,意大利大奖赛平均1分和5分获得3分,依此类推

我怀疑您需要两个级别的聚合。首先是按年份和比赛,因此我们可以计算进站次数,然后仅按比赛,以计算每场比赛的年平均数:

select race_name, avg(cnt_pitstops) as avg_pitsops_per_year
from (
    select year(pitstopracedate) as race_year,
        pitstopracename as race_name, 
        count(*) as cnt_pitstops
    from mospo_pitstop
    group by race_year, race_name
) t

如果我理解正确,您可以计算进站次数并除以年数:

select pitstopRaceName,
       count(*) / count(distinct pitstopRaceDate)
from MoSpo_PitStop ps
group by pitstopRaceName;
如果
pitstopRaceDate
没有定义比赛,您可以只使用年份:

select pitstopRaceName,
       count(*) / count(distinct year(pitstopRaceDate))
from MoSpo_PitStop ps
group by pitstopRaceName;

如果我理解正确,您可以计算进站次数并除以年数:

select pitstopRaceName,
       count(*) / count(distinct pitstopRaceDate)
from MoSpo_PitStop ps
group by pitstopRaceName;
如果
pitstopRaceDate
没有定义比赛,您可以只使用年份:

select pitstopRaceName,
       count(*) / count(distinct year(pitstopRaceDate))
from MoSpo_PitStop ps
group by pitstopRaceName;

编辑问题并显示源数据的外观。编辑问题并显示源数据的外观。