=encoding euc-jp

=head1 名前

Class::DBI::Plugin::AggregateFunction - Class::DBIで集約関数を扱うためのモジュール

=head1 概要

  package MyData::CD;
  use base qw/Class::DBI/;
  use Class::DBI::Plugin::AggregateFunction;
  __PACKAGE__->mk_aggregate_function('sum');
  __PACKAGE__->mk_aggregate_function( max => 'maximum');
  
  package main;
  # SELECT MAX(price) FROM __TABLE__
  $max = MyData::CD->maximum( 'price' );
  
  # SELECT SUM(price) FROM __TABLE__ WHERE artist = 'foo'
  $sum = MyData::CD->sum( 'price', artist => 'foo', );
  $sum = MyData::CD->sum( 'price', {
  	price => {'>=', 1000},
  });

=head1 説明

Class::DBIを使ったテーブルで簡単に集約関数が使えるようになります。

=head1 使い方

=head2 集約関数メソッドを作る

mk_aggregate_functionメソッドを使って集約関数を追加します。
第１引数にSQLで利用する集約関数を、第２引数にメソッド名を指定します。
メソッド名が省略された場合は、集約関数名がメソッド名になります。

  __PACKAGE__->mk_aggregate_function( 'max' );

または

  __PACKAGE__->mk_aggregate_function( 'max' => 'maximum' );

=head2 集約関数メソッドを使う

集約関数の第１引数に、対象となるカラム名を記述します。

  $max_price = MyData::CD->maximum( 'price' );

第２引数以降はClass::DBI::AbstractSearchのsearch_whereメソッドと同様の記述ができます。

  # SELECT SUM(price) FROM __TABLE__ WHERE artist = 'foo'
  $total_price = MyData::CD->sum( 'price',
  	'artist' => 'foo',
  );

または

  # SELECT SUM(price) FROM __TABLE__ WHERE price >= 1000
  $total_price = MyData::CD->sum( 'price', {
  	'price' => {'>=', 1000},
  });


=head1 AUTHOR

ASAKURA Takuji <asakura.takuji+cpan@gmail.com>

=head1 LICENSE

This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.

=head1 SEE ALSO

L<Class::DBI::AbstractSearch>, L<Class::DBI>

=cut
