Skip site navigation (1) Skip section navigation (2)

Peripheral Links

Header And Logo

PostgreSQL
| The world's most advanced open source database.

Site Navigation

Search for
  Advanced Search

Re: Imbrication de fonction d'aggregat impossible



Christophe Garault a écrit :
> [...]
> select avg(count(*)) from logs where log_program like '%postfix%' and
> log_message like '%reject%' group by log_date;
> ERREUR:  les appels a la fonction d'aggregat ne doivent pas etre imbriques
> 
> Dois-je en passer obligatoirement par une table intermédiaire ou l'un
> d'entre vous aurait une autre solution à me proposer?
> 

Passe plutôt par une requête imbriquée :
  SELECT avg(total)
  FROM (select count(*) as total from logs
        where log_program like '%postfix%'
        and log_message like '%reject%') AS tmp;

Je n'ai pas testé car je n'ai pas le temps actuellement, mais je
commencerais avec ça.

Pour plus d'infos, voir :
http://docs.postgresqlfr.org/8.2/queries-table-expressions.html#queries-subqueries

Sinon, tu peux aussi créer une vue à partir de ta première sélection :
  CREATE VIEW logs_postfix_rejected (log_date, log_count)
  AS
  select log_date, count(*) from logs
  where log_program like '%postfix%'
  and log_message like '%reject%'
  group by log_date;

Pour avoir la moyenne, c'est bien plus simple du coup :
  SELECT avg(log_count) FROM logs_postfix_rejected

Là aussi, pas testé, faut que je file, je suis de plus en plus en retard...

Un dernier truc : je pense que ces deux méthodes sont équivalents au
niveau du serveur PostgreSQL car il ne s'agit pas d'une vue
matérialisée. Tu ne gagneras pas en perfs en utilisant l'une plutôt que
l'autre (enfin, c'est mon avis/impression comme ça, là, rapide). Par
contre, la vue est intéressante car tu peux la réutiliser pour d'autres
applications, ce qui t'évite de saisir des grosses requêtes
continuellement. En fait, actuellement, dans PostgreSQL, les vues ne
sont qu'un espace où on peut stocker nos requêtes favorites et/ou les
plus utilisées.

Voilà,

Bon courage :)


-- 
Guillaume.
<!-- http://abs.traduc.org/
     http://lfs.traduc.org/
     http://docs.postgresqlfr.org/ -->



Home | Main Index | Thread Index

Privacy Policy | PostgreSQL Archives hosted by Command Prompt, Inc. | Designed by tinysofa
Copyright © 1996 – 2008 PostgreSQL Global Development Group