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