Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сгруппировать элементы массива хэшей, нужно сгруппировать массив их хэшей 
:(
    Опции темы
pirojok
Дата 22.6.2010, 08:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 11.11.2007

Репутация: нет
Всего: нет



Делаю выборку из БД:
Код

my $result=$sql_request->execute || die "Error while to execute the $sql";
while(my %RESULT=%{$sql_request->fetchrow_hashref})
                                {
                                push @out,\%RESULT;
                                }


на выходе имеем:
komanda     user      inc
______________________
com1           user1    inc1
com2           user3    inc2
com3           user1    inc3
com1           user1    inc4
com2           user3    inc5
com2           user3    inc6
com3           user1    inc7

Эти данные необходимо сгруппировать по полям komanda  и user (аналогично group by komanda,user  в SQL).
Получив,например массив хэшей вида:
komanda     user     count
______________________
com1            user1    2
com2            user3    3
и т.д.

Как это реализовать средствами perl ?
П.С. сделать группировку средствами ORACLE не удалось.


Это сообщение отредактировал(а) pirojok - 22.6.2010, 08:59
PM MAIL   Вверх
dva300
Дата 22.6.2010, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 17.2.2010
Где: Москва

Репутация: -1
Всего: 1



Цитата(pirojok @ 22.6.2010,  08:58)
Делаю выборку из БД:
Код

my $result=$sql_request->execute || die "Error while to execute the $sql";
while(my %RESULT=%{$sql_request->fetchrow_hashref})
                                {
                                push @out,\%RESULT;
                                }


на выходе имеем:
komanda     user      inc
______________________
com1           user1    inc1
com2           user3    inc2
com3           user1    inc3
com1           user1    inc4
com2           user3    inc5
com2           user3    inc6
com3           user1    inc7

Эти данные необходимо сгруппировать по полям komanda  и user (аналогично group by komanda,user  в SQL).
Получив,например массив хэшей вида:
komanda     user     count
______________________
com1            user1    2
com2            user3    3
и т.д.

Как это реализовать средствами perl ?
П.С. сделать группировку средствами ORACLE не удалось.

привет, 
что то мне не вериться в oracle это нельзя сделать sql-ем.

см мой пример. может поможет. 
1) обрати внимание на обработку ошибки execute 
2) зачем нужен fetchrow_hashref я не совсем понял.

пример не проверял потому так как нет возможности сейчас. возможно есть ошибки но логика должна быть верной.

Код

my %hash;

my $res = db->prepare("SElECT * FROM bd_name");
$res->execute();
if ($res->err)
    {
    print "Ошибка ". $res->errstr;
    }
else
    {
    while (my @row = $res->fetchrow_array())
        {
        if (exists($hash{$row[0]}))
            {
            $hash{$row[0]}->[1] = $hash{$row[0]}->[1] + 1;
            }
        else
            {
            $hash{$row[0]}->[0] = $row[1];
            $hash{$row[0]}->[1] = 1;
            }
        }
    }    

# Вывод
foreach my $key (sort(keys(%hash)))
    {
    print "$key => ";
        for (my $i=0; $i<@{$hash{$key}};$i++)
            {
            print "$hash{$key}->[$i]";
            }
        print "\n";
    }


P.S. а SQL попробуй такой SELECT komanda,max(user),count(inc) from table group by komanda

Это сообщение отредактировал(а) dva300 - 22.6.2010, 14:45
--------------------
Участник движения Культура Вождения
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0411 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.