AWK - рассчитать максимальные продажи по массивам - PullRequest
0 голосов
/ 05 мая 2018

В соответствии с линией продаж, мой второй, если вычислить самые высокие продажи, не получает окончательную наибольшую сумму продаж. От одной сделки купли-продажи она составила 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";
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...