PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 02/01/2014 14:24:54

CHR
Membre

[RESOLU] - Equivalent "over (PARTITION BY..." pour la version 8.3.19

Je viens de réaliser que le serveur sur lequel je voulais utiliser les solutions que vous m'avez proposées est dans la version 8.3.19 et que cette  version n'inclut pas le fenêtrage... les over (PARTITION BY sont donc inutilisables, je ne sais pas si nous avons prévu de migrer et vu les soucis annoncés pour passer la 8.3, bref, auriez-vous une alternative à cette solution qui soit utilisable dans la 8.3.19 ?
D'avance merci,
chr

Dernière modification par CHR (02/01/2014 17:22:40)

Hors ligne

#2 02/01/2014 14:52:43

rjuju
Administrateur

Re : [RESOLU] - Equivalent "over (PARTITION BY..." pour la version 8.3.19

Vous pouvez réécrire la requête ainsi (non testé sur une 8.3) :


SELECT staff_id, extract(month from payment_date),
count(*) AS totmois,
(SELECT count(*) FROM payment where staff_id = p.staff_id) AS total,
(SELECT count(*) FROM payment) as totgeneral
FROM payment p
GROUP BY staff_id, extract(month from payment_date)
ORDER BY staff_id, extract(month from payment_date);


Seulement cette requête sera vraiment beaucoup moins performante qu'avec des fonctions de fenêtrage.

Il n'y a pas énormément de régressions depuis la version 8.3 (le pire étant le passage en 8.3, du à la suppression des casts implicites). La version 8.3 n'étant plus supportée, vous devriez prévoir une migration assez rapidement vers une 9.2 ou 9.3.

Hors ligne

#3 02/01/2014 17:22:14

CHR
Membre

Re : [RESOLU] - Equivalent "over (PARTITION BY..." pour la version 8.3.19

Merci pour vos précieuses réponse et bonne suite !

Hors ligne

Pied de page des forums