no way to compare when less than two revisions
Différences
Ci-dessous, les différences entre deux révisions de la page.
| — | support:trucs_et_astuces:tableau_accumulateur [2008/10/15 16:47] (Version actuelle) – créée ioguix | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | ====== Tableau Accumulateur ====== | ||
| + | Plutôt que de faire une somme, on peut avoir besoin de cumuler l' | ||
| + | |||
| + | <code sql> | ||
| + | CREATE AGGREGATE array_acc ( | ||
| + | BASETYPE = anyelement, | ||
| + | SFUNC = array_append, | ||
| + | STYPE = anyarray, | ||
| + | INITCOND = ' | ||
| + | ); | ||
| + | </ | ||
| + | |||
| + | Il s' | ||
| + | |||
| + | < | ||
| + | pgloader=# begin; | ||
| + | BEGIN | ||
| + | pgloader=# create table foo (a int, b text); | ||
| + | CREATE TABLE | ||
| + | pgloader=# insert into foo values(1, ' | ||
| + | INSERT 0 4 | ||
| + | pgloader=# CREATE AGGREGATE array_acc ( | ||
| + | pgloader(# BASETYPE = anyelement, | ||
| + | pgloader(# SFUNC = array_append, | ||
| + | pgloader(# STYPE = anyarray, | ||
| + | pgloader(# INITCOND = ' | ||
| + | pgloader(# ); | ||
| + | CREATE AGGREGATE | ||
| + | pgloader=# select a, array_acc(b) from foo group by a; | ||
| + | a | array_acc | ||
| + | ---+----------------- | ||
| + | 2 | {baz} | ||
| + | 1 | {foo, | ||
| + | (2 lignes) | ||
| + | pgloader=# rollback; | ||
| + | ROLLBACK | ||
| + | pgloader=# begin; | ||
| + | BEGIN | ||
| + | pgloader=# create table foo (a int, b text); | ||
| + | CREATE TABLE | ||
| + | pgloader=# insert into foo values(1, ' | ||
| + | INSERT 0 4 | ||
| + | pgloader=# CREATE AGGREGATE array_acc ( | ||
| + | pgloader(# BASETYPE = anyelement, | ||
| + | pgloader(# SFUNC = array_append, | ||
| + | pgloader(# STYPE = anyarray, | ||
| + | pgloader(# INITCOND = ' | ||
| + | pgloader(# ); | ||
| + | CREATE AGGREGATE | ||
| + | pgloader=# select a, array_acc(b) from foo group by a; | ||
| + | a | array_acc | ||
| + | ---+----------------- | ||
| + | 2 | {baz} | ||
| + | 1 | {foo, | ||
| + | (2 lignes) | ||
| + | |||
| + | pgloader=# rollback; | ||
| + | ROLLBACK | ||
| + | </ | ||
| + | |||
| + | -- \\ | ||
| + | Par dim le 05/06/2007 | ||
 
       
       
   
  