Суммировать столбцы и подсчитать разные значения другого столбца

На самом деле, Вам просто нужно проверить настройку в :Системные настройки:(Рабочая область )Поведение рабочего стола > Блокировка экрана |> Блокировка экрана автоматически через :5 минут И, Системные настройки:(Оборудование )Управление питанием> Энергосберегающий экран.

0
09.03.2021, 11:34
2 ответа

Предполагая, что у вас есть GNU awkдля настоящих многомерных массивов и для length()функции, которая работает с массивами, будет сделано следующее:

gawk -F';' -v OFS=';' 'FNR==1{print "Articles;Qty;Sales;Count of different customers";next}
                       {qty[$1]+=$2;sls[$1]+=$3;cust[$1][$4]}
                       END{for (a in qty) {print a,qty[a],sls[a],length(cust[a])}}' input.ssv 

Результат для вашего входного файла будет

Articles;Qty;Sales;Count of different customers
ArticleA;14;42;2
ArticleB;3;6;2
ArticleC;3;3;1

Эта программа будет

  • вывести первую строку как -и пропустить выполнение до следующей строки
  • суммировать количество и количество продаж в ассоциативных массивах qtyи slsс артикулом как "индекс массива"
  • зарегистрировать каждого клиента в двумерном -массиве, где первый индекс — это статья, а второй индекс — имя клиента

В итоге программа перебирает все товары (, взятые из индексов массива qty), и печатает статью, суммарное количество, суммарные продажи и «длину» массива клиентов для эта статья, которая составляет количество отдельных клиентов.

0
18.03.2021, 22:26

Сawk:

awk 'BEGIN{ FS=OFS=";" }
      NR>1{ s1[$1]+=$2; s2[$1]+=$3; c[$1, $4]=$1 }
END{
    print "Articles", "Qty", "Sales", "Count of different customers" 
    for(x in c) cs[c[x]]++; for(i in cs) print i, s1[i], s2[i], cs[i]
}' infile
0
18.03.2021, 22:26

Теги

Похожие вопросы