(PHP 5 < 5.4.0, PECL sqlite >= 1.0.0)
sqlite_create_aggregate -- SQLiteDatabase::createAggregate — Registra un aggregato UDF da utilizzare nelle istruzioni SQL
$dbhandle
   , string $function_name
   , callable $step_func
   , callable $finalize_func
   [, int $num_args = -1
  ] )Stile orientato agli oggetti (metodo):
$function_name
    , callable $step_func
    , callable $finalize_func
    [, int $num_args = -1
   ] )sqlite_create_aggregate() è simile a sqlite_create_function() tranne che le funzioni di registrazione possono essere utilizzate per calcolare un risultato aggregato da tutte le righe della query.
   La differenza chiave tra questa funzione e 
   sqlite_create_function() è che entrambe le funzioni sono necessarie
   per gestire gli aggregati; la funzione step_func viene richiamata
   per ogni riga del set di risultati. La funzione PHP personalizzata dovrebbe
   accumulare i dati e memorizzarli nel contesto di aggregazione.
   Una volta che tutte le righe sono state processate,
   si esegue la funzione finalize_func che dovrebbe
   prendere i dati dal contesto di aggregazione e restituire il risultato.
   La funzione personalizzata deve restituire un tipo riconosciuto da SQLite (ad esempio 
   un tipo scalare).
  
dbhandleRisorsa SQLite Database; restituita da sqlite_open () quando usato in modo procedurale. Questo parametro non è richiesto nel metodo ad oggetti.
function_nameIl nome della funzione usata nell'istruzione SQL.
step_funcFunzione richiamata per ogni riga del set di risultati. I parametri della funzione sono &$context, $value, ....
finalize_funcFunzione di callback richiamata per aggregare i dati da ogni riga. Il parametro della funzione è &$context e la funzione deve ritornare il risultato finale dell'aggregazione.
num_argsSuggerisce al parser SQLite se la funzione di callback accetta un numero predefinito di argomenti.
Nessun valore viene restituito.
Example #1 Esempio di una funzione di aggregazione lunghezza_massima
<?php
$data = array(
   'one',
   'two',
   'three',
   'four',
   'five',
   'six',
   'seven',
   'eight',
   'nine',
   'ten',
   );
$dbhandle = sqlite_open(':memory:');
sqlite_query($dbhandle, "CREATE TABLE strings(a)");
foreach ($data as $str) {
    $str = sqlite_escape_string($str);
    sqlite_query($dbhandle, "INSERT INTO strings VALUES ('$str')");
}
function max_len_step(&$context, $string) 
{
    if (strlen($string) > $context) {
        $context = strlen($string);
    }
}
function max_len_finalize(&$context) 
{
    return $context;
}
sqlite_create_aggregate($dbhandle, 'max_len', 'max_len_step', 'max_len_finalize');
var_dump(sqlite_array_query($dbhandle, 'SELECT max_len(a) from strings'));
?>
   In questo esempio creiamo una funzione di aggregazione che calcola
   la lunghezza della stringa più lunga presente in una colonna della
   tabella. Per ciascuna riga, si esegue la funzione max_len_step
   nella quale viene passato il parametro context. Questo parametro
   è come una qualsiasi variabile PHP ed è impostata per contenere un array od un
   oggetto. In questo esempio, verrà utilizzata semplicemente per contenere
   la lunghezza massima della stringa; se la
   string è di lunghezza superiore al valore
   massimo corrente, noi aggiorneremo il contesto affinchè registri il nuovo massimo.
  
   Quando sono state processate tutte le righe, SQLite esegue la funzione
   max_len_finalize per determinare il risultato aggregato.
   In questa funzione possiamo svolgere qualsiasi tipo di operazione basata sui dati
   presenti nel parametro context.
   Nel nostro esempio abbiamo calcolato il risultato man mano che si processavano le righe, 
   pertanto non ci resta che restituire il valore.   
  
Nota:
L'esempio precedente non avrebbe funzionato correttamente se la colonna avesse contenuto dati binari. Guardare sul manuale la pagina sqlite_udf_decode_binary() per una spiegazione del perché, e l'esempio di come questo rispetti la codifica binaria.
NON si raccomanda si memorizzare nel contesto una copia dei valori di ciascuna riga, per poi processarli alla fine; questo costringe SQLite a utilizzare una grande quantità di memoria per processare la query - basta pensare a quanta memoria sarebbe necessaria se si memorizzassero un milione di righe, ciscuna contenente una stringa di 32 byte.
Si può utilizzare sqlite_create_function() e sqlite_create_aggregate() per non utilizzare le funzioni SQL native di SQLite.