每天计算运行平均值,重置年度变化

时间:2016-10-12 00:24:18

标签: perl

我正在为课程做db dbmt。我必须找到每天检查的平均书籍数量。我查询了数据库并将数据存储在以日期为关键字的哈希中。对于正在运行的平均值,我将需要检出的书籍的总数/总数和日期的计数,我计算通过循环。我被困在这里: - 如果年份改变,计数器和总数/总和应该是重置即它应该从零开始。我不明白如何处理日期是我的关键。

  1. 因为以日期为键,我不会每天获得运行总数或运行平均值。我得到那天的总和/平均值。
  2. 没有使用常规总和方法的哈希我能够获得一年的每日平均值,但再次无法处理年度更改条件。这是我的两段代码。谢谢你的帮助。最早会得到一些帮助,这项任务将在午夜之前完成。
  3. 方法一:

    foreach my $date(sort {$a cmp $b} keys %bookdata){
        # my $year = substr($date,0,4);
        # $daily_data{$date}{year} = $year;
        $daily_data{$date}{tbooks} += $bookdata{$date}{books};
        $daily_data{$date}{count}++;
    }
    
    foreach my $d (keys %daily_data){
        $daily_data{$date}{avg}=$daily_data{$date}  {tbooks}/$daily_data{$date}{count};
    }
    

    编辑方法2

    我的计数器虽然没有重置:(

    my $dcount=0;
    my $tbooks=0;
    my $avgVal;
    my $fdate=0;
    my $fyear;
    
    foreach my $date(sort keys %bookdata){
        my $yr = substr($date,0,4); 
        if (!$fdate){
            $fdate=1;
            $fyear = $yr;
        }
    
        if($yr eq $fyear){
        $dcount++;
        $tbooks = $tbooks + $bookdata{$date}{books};
        $avgVal = $tbooks /$dcount;
        print Dumper $avgVal;
      }else{
           reset $dcount;
      }
    
        $fyear = $yr;
        next;
    }
    

0 个答案:

没有答案