Ivanovo Linux Users Group -  
Форум Помощь Поиск Вход
Предыдущая Следующая Вверх Тема Программирование / Прикладное / GROUP BY (9344 хитов)
- Написал(а) G0thic Дата 06.03.07 13:00
Подскажите, как шелл скриптом сосчитать суммы в группах, также как в sql запросе:
SELECT SUM(TOTAL) FROM X GROUP BY NAME;
-------
NAME TOTAL
a 1
a 1
b 2
b 2
c 4
c 4
------
Получить надо
a 2
b 4
c 8
Когда кругозор человека сужается к минимуму, он называет это своей точкой зрения.
Parent - Написал(а) G0thic Дата 06.03.07 13:12
Хотелось бы на awk. Потому как ничего другого типа перла или пхп на хосте нет.
awk {s[$1] += $2} END { print s } - не прокатывает. походу в нем нет ассоциативных массивоф :-(
Когда кругозор человека сужается к минимуму, он называет это своей точкой зрения.
Parent - Написал(а) G0thic Дата 06.03.07 14:12 Отредактировано 06.03.07 14:17
Все нормально, работает ;-)
Только вот так надо:
awk '{s[$1] += $2} END {for (k in s) print k,s[k]}'
Когда кругозор человека сужается к минимуму, он называет это своей точкой зрения.
Parent - Написал(а) LOE (Site/forum admin) Дата 06.03.07 14:16
Массивы в awk как раз ассоциативные :-)

Чуток вывод по другому сделай (судя по условию задачи):
awk '{S[$1] += $2} END { for (k in S) print k " " S[k] }'
"No! Try not! Do. Or do not. There is no try." -- Yoda
Parent Написал(а) G0thic Дата 06.03.07 14:17
Начал причесывать - увидел твой ответ. Уже поправил ;-)
Когда кругозор человека сужается к минимуму, он называет это своей точкой зрения.
Parent Написал(а) G0thic Дата 06.03.07 14:19
Только у меня в данных вместо a,b и c - предложения. Тут похитрее получается. Надо $NF использовать.
Но все равно я доволен :-)
Когда кругозор человека сужается к минимуму, он называет это своей точкой зрения.
Предыдущая Следующая Вверх Тема Программирование / Прикладное / GROUP BY (9344 хитов)

Powered by mwForum 2.12.0 © 1999-2007 Markus Wichitill

Page created in 0.080s with 11 database queries.