Bonjour à tous,
je cherche à obtenir des fonctions statistiques sous access et notamment à connaitre les quartiles d'un grand nombre d'enregistrements.
si quelqu'un aurait une solution...
merci par avance
Bonjour à tous,
je cherche à obtenir des fonctions statistiques sous access et notamment à connaitre les quartiles d'un grand nombre d'enregistrements.
si quelqu'un aurait une solution...
merci par avance
soit à chercher le nénième xtile d'un champ dans une table de 10 000 enregistrements
supposons 43ème centile
c'est la valeur du 4300 éme enregistrement si je classe par ordre croissant mes valeurs
taille*niémé*xtile=10000/100*43
je fais une requête select top 4300 valeur from ma table order by valeur
j'utilise cette requête
select top 1 valeur from ma requête order by valeur desc
merci pour la réponse mais je doit effectuer cette opération sur un grand nombre de fois.
Je m'explique : j'ai 10 secteurs contenant 10 entités pour près de 58000 valeurs et je dois réaliser ce calcul pour chaque entité de chaque secteurs... et bien entendu le nombre de valeurs diffèrent pour chaque entité.
Si tu as excel, tu peux regarder si ses fonctions sont disponibles...
Puis tu pourras trouver le code vba (si ca fonctionne sur excel, il y a de forte chose pour qu'on puisse les utiliser sous access).
la fonction existe sous excel :QUARTILE (matrice;quart).
C'est vrai que je préférerais l'utiliser sous access ca m'eviterais de personnaliser en focntion du nombre d'entités.
Tu l'as essayé sous access ou pas ?
Tiens moi au courant stp pour voir si ca fonctionne![]()
j'ai essayé dès le début mais je n'y suis pas arrivé... (désolé je ne suis pas un pro d'access...)
Dans une procédure :
un document avec les fonctions excel 97 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 dim résultat as integer résultat = QUARTILE(variable_matrice;variable_quart) msgbox résultat
http://ensg.ign.fr/FAD/FAD_PDF/cpri_pdf/excel97.pdf
tu peux essayer cette fonction
bien évidemment il faut modifier matable par le nom de TA table
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 Function enile(sect As String, enti As String, ile As Integer, rangile As Integer) As Double Dim base As DAO.Database Dim data As DAO.Recordset Dim sql As String Dim lequel As Variant If rangile > ile Then MsgBox ("rang invalide") enile = 0 Exit Function End If Set base = CurrentDb() sql = "SELECT secteur, entité, Count(montant) AS nb FROM matable " sql = sql & "GROUP BY secteur, entité " sql = sql & "HAVING (secteur='" & sect & "' ) AND (entité='" & enti & "');" Set data = base.OpenRecordset(sql) If data.RecordCount <> 1 Then enile = 0 MsgBox ("entité ou secteur ko") Exit Function End If lequel = Int(data![nb] / ile * rangile) sql = "SELECT TOP " & lequel & " secteur, entité, montant FROM matable " sql = sql & "WHERE (secteur = '" & sect & "' ) And (entité = '" & enti & "' ) " sql = sql & "ORDER BY secteur, entité, montant;" Debug.Print sql Set data = base.OpenRecordset(sql) data.MoveFirst data.MoveLast enile = data![montant] Set data = Nothing Set base = Nothing End Function
secteur par le nom du champ secteur
et entité par le nom du champ entité
la fonction s'utilise adressant comme paramètre
le secteur, l'entité
ile sous la forme 4 pour quartile 10 pour décile
rangile pour indiquer le rand du ile
on pourrait perfectionner la fonction en faisant la moyenne des valeurs limites si le nombre d'enregistrements du ile est pair mais c'est
pas si mal en utilisation courante
les performances doivent être assez mauvaises (à lancer de préférence
à partir d'une table des structures)
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager