В соответствии с линией продаж, мой второй, если вычислить самые высокие продажи, не получает окончательную наибольшую сумму продаж. От одной сделки купли-продажи она составила 6999,99 вместо 7226,98. Не уверен, как и почему это произойдет, учитывая, насколько простой код. любые идеи или помощь будут оценены.
BEGIN{
## Field Separator.
FS=":";
##Declaration
highSales = 0;
## Header.
print
printf("%s\n", "ABC Computing");
printf("%s\n", "2017 Sales Associates Report");
printf("%-30s %-20s %20s\n", "Name", "Position", "Sales amount");
for (i = 0; i < 72; i++)
{
printf("%c", "=");
}
print;
}
## Associates lines.
## $1 -> Associate ID.
## $2 -> First name.
## $3 -> Position.
NF == 3{
salesPersonID[$1] = $2;
position[$1] = $3;
}
## Product lines.
## $1 -> Product ID.
## $4 -> Price.
NF == 4{
product[$1] = $4;
}
## Sales lines.
## $2 -> Product ID.
## $3 -> Quantity.
## $4 -> Date.
NF == 5 && $4 ~ /2017/{
if ($2 in product){
sales[$5] += $3 * product[$2];
if ( ($3 * product[$2]) > highSales){
highSalesID = salesPersonID[$5];
highSales = $3 * product[$2];
}
}
}
END{
for (z in salesPersonID)
{
printf("%-30s %-20s %20s\n", salesPersonID[z], position[z], sales[z]);
}
print "\n" highSalesID " has the highest sales total with: " highSales "\n";
printf("%s\n", "Sorted Sales Report");
for (i = 0; i < 52; i++)
{
printf("%c", "=");
}
print "\n"
for(x in sales)
{
printf("%-2s %-30s %20s\n", x, salesPersonID[x], sales[x]) | "sort -rnk4";
}
}