[COMMIT LOGREPORT] service/all/lib/Lire Average.pm,1.14,1.15
Francis J. Lacoste
flacoste at users.sourceforge.net
Wed Jun 15 22:09:16 CEST 2005
Update of /cvsroot/logreport/service/all/lib/Lire
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31888/all/lib/Lire
Modified Files:
Average.pm
Log Message:
- lr_count_uniq doesn't make sense when by_fields is a numerical field.
Index: Average.pm
===================================================================
RCS file: /cvsroot/logreport/service/all/lib/Lire/Average.pm,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- Average.pm 14 Jun 2005 19:47:37 -0000 1.14
+++ Average.pm 15 Jun 2005 20:09:14 -0000 1.15
@@ -177,7 +177,7 @@
my $sum_expr;
if ( defined $self->{'weight' }) {
- $sum_expr = sprintf( 'sum(%s*%s)',
+ $sum_expr = sprintf( 'sum(%s*%s)',
sql_quote_name( $self->{'field'} ),
sql_quote_name( $self->{'weight'} ) );
} else {
@@ -186,16 +186,20 @@
$query->add_aggr_field( $self->{'name'} . "_total", $sum_expr );
my $n_expr;
- if ( defined $self->{'by_fields'} ) {
+ if ( !defined $self->{'by_fields'} ) {
+ $n_expr = 'count(*)';
+ } elsif ( @{$self->{'by_fields'}} == 1 &&
+ is_numeric_type( $self->report_spec()->field( $self->{'by_fields'}[0] )->type() ) )
+ {
+ $n_expr = sprintf( 'sum(%s)', sql_quote_name($self->{'by_fields'}[0]));
+ } else {
my @fields = map { sql_quote_name( $_ ) } @{ $self->{'by_fields'} };
$n_expr = sprintf( 'lr_count_uniq(%s)', join (',', @fields) );
- } else {
- $n_expr = 'count(*)';
}
$query->add_aggr_field( $self->{'name'} . "_n", $n_expr );
-
$query->add_aggr_field( $self->{'name'},
sprintf( '%s/%s', $sum_expr, $n_expr ) );
+ return;
}
# Overrides Lire::SimpleStat::sql_required_fields
--
To UNSUBSCRIBE, email to commit-request at logreport.org with a subject of
"unsubscribe". Trouble? Send an email with subject "help" to
commit-request at logreport.org
More information about the Commit
mailing list