Вот что у меня получилось
#!/usr/bin/perl -w
use 5.006;
use strict;
use warnings;
#use Data::Dumper;
use DBI;
my ($schemaName, $passwd, $tableName) = qw(scott tiger t1);
my %content;
my $dbh = DBI->connect("dbi:Oracle:", $schemaName, $passwd);
%content = &getTableContent($schemaName,$tableName);
#print Dumper(\\%content);
&printOutInMyFormat( ) if %content;
$dbh->disconnect(  ); 
sub getTableContent {
    my ( $owner, $tabName ) = @_;
    my %content;
    my $sql = qq{ SELECT name,col
                    FROM $owner.$tabName
                };
    my $sth = $dbh->prepare($sql);
       $sth->execute(  );
    while ( @_ = $sth->fetchrow_array ) {
            push @{$content{$_[0]}},$_[1];
    }
    return %content;
}
sub printOutInMyFormat {
    
    foreach my $name( keys %content) {
        my $sum = 0;
        foreach (@{$content{$name}}) {
            print $name, \' - \', $_,"\\n";
            $sum += $_;
        }
        print \'-\' x 10,"\\n$sum\\n\\n"
    }
}
Это для Оракла, но я думаю разберётесь. Если же понадобится в отсортированном виде, то добавьте \'sort\' перед \'keys\', и не используйте \'order by\' в запросе.