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 21/06/2012 13:48:44

damalaan
Membre

Calculer une fréquence

Soit  les valeurs suivantes :

id1;id2;matricule;valeur
293469;19659;11253;39.9
Pour ceux qui connaissent Excel, je cherche à reproduire la fonction matricielle Fréquence(matrice_valeurs;matrice_intervalles)

293470;19659;13207;42.5
293471;19659;5026;37.2
293472;19659;11190;44.5
293473;19659;10460;50.7
293474;19659;11107;45.4
293475;19659;15868;42.2
293476;19659;5084;45.3
293477;19659;5041;46.1

il me faut récupérer le nombre de valeurs par tranches suivantes:

39
40
41
42
43
44
45

pour avoir un résultat :

39	1
40	1
41	0
42	0
43	2
44	0
45	1

ce qui signifie que j'ai une valeur <= à 39, 1 entre dans l'intervalle ]39-40], 0 dans ]40-41] etc jusqu'à 1 dans ]44,45]

pour la partie intervalle, je pense utiliser qqc du genre
select * from generate_series(39,45,1);

Hors ligne

#2 25/06/2012 14:45:06

Marc Cousin
Membre

Re : Calculer une fréquence

On peut s'en sortir avec ça:

SELECT lim,
       count(id1) 
FROM 
  (select generate_series((select min(valeur) from test)::int,(select max(valeur) from test)::int) lim) as limite 
left join test 
  on (limite.lim<=valeur and limite.lim+1>valeur) 
group by lim order by lim;
 lim | count 
-----+-------
  37 |     1
  38 |     0
  39 |     1
  40 |     0
  41 |     0
  42 |     2
  43 |     0
  44 |     1
  45 |     2
  46 |     1
  47 |     0
  48 |     0
  49 |     0
  50 |     1
  51 |     0

Dernière modification par Marc Cousin (25/06/2012 14:45:26)


Marc.

Hors ligne

Pied de page des forums