J'ai besoin de faire le même groupe sur un tas d'agrégats différents que j'obtiens avec des sous-requêtes imbriquées dans Postgresql 8.3.Agrégat imbriqué et sous-requête dans postgresql/SQL avec groupement
Si je fais ceci:
select f10 as report_id,
(SELECT AVG(age)
FROM (select f10 as report_id,
f62 as age
from reports
where f55 in ('1'))
and f62 in ('1', '2', '3', '4', '5'))) foo
group by report_id) as agg1,
(SELECT AVG(age)
FROM (select f10 as report_id,
f62 as age
from reports
where f55 in ('2'))
and f62 in ('1', '2', '3', '4', '5'))) foo
group by report_id) as agg2,
from reports
group by report_id;
il est presque ce que je veux, mais le groupe ne fait pas par anything- tous les agrégats sont les mêmes, il est un agrégat dans tous report_ids. Je veux un agrégat séparé par report_id.
Si j'essaie de regrouper les agrégats, je ne peux pas renvoyer plus de 2 champs ou lignes et cela ne fonctionne donc pas.
Il m'a été suggéré de faire
sum(case
when f55 in ('1') then f62
else 0
end)/sum(case
when f55 in ('1') then 1
else 0
end)
... etc. pour chacun des agrégats mais je ne pense pas que ce soit un bon moyen d'y aller. Je n'arrive pas à trouver mieux.
la page Web n'est pas disponible pour moi – Mohsen
Je vote cette réponse puisque la question est ancienne et 8.3 sera probablement pris en charge moins d'une autre an. Bien qu'il ne soit pas suffisant au moment où il a été donné, la meilleure réponse deux ans plus tard est "mise à niveau". –