Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Minimum, maximum

11 réponses
Avatar
Chevrot
Bonjour à tous, la météo est bonne.

Je bute sur un problème stupide. Exite-t-il une formule dans Access 2003,
qui permette de calculer dans une requête le minimum (resp. le maximum) de
plusieurs champs des enregistrements d'une table?

Par ailleurs, existe-t-il un moyen de calculer la moyenne et l'écart type
des valeurs non nulles d'un champ sur les enregistrements d'une table?

merci de m'éclairer.

Alain

10 réponses

1 2
Avatar
Mehdi HAMMADI
Bonjour,

Vous avez la possibilité à travers les requêtes de regroupement d'effectuer
des statistiques sur vos données en utilisant à la place de la fonction
Regroupement ou Somme, les fonctions, Min, Max, Moyenne StDEV et Var.

La requête SQL ci-après permet en même temps d'afficher le minimum, le
maximum, la moyenne , l'écart type et variance du champ "Age" de la table
"Table1"

SELECT Min(Table1.Age) AS Minimum, Max(Table1.Age) AS Maximum,
Avg(Table1.Age) AS Moyenne, StDev(Table1.Age) AS [Ecart Type],
Var(Table1.Age) AS Variance
FROM Table1;

--
Cordialement
MehdiH

http://officeusers.blogspot.com/
_________________________________________



"Chevrot" a écrit dans le message de
groupe de discussion :
Bonjour à tous, la météo est bonne.

Je bute sur un problème stupide. Exite-t-il une formule dans Access 2003,
qui permette de calculer dans une requête le minimum (resp. le maximum) de
plusieurs champs des enregistrements d'une table?

Par ailleurs, existe-t-il un moyen de calculer la moyenne et l'écart type
des valeurs non nulles d'un champ sur les enregistrements d'une table?

merci de m'éclairer.

Alain
Avatar
Chevrot
Merci de votre réponse

Je me suis mal exprimé: en ce qui concerne les minimum et maximum, je
cherche un moyen d'afficher le minimum ou le maximum entre plusieurs champs
d'un même enregistrement et non le minimum ou le maximum d'un champ dans tous
les enregistrements.

merci de me donner la solution.

Alain

"Mehdi HAMMADI" a écrit :

Bonjour,

Vous avez la possibilité à travers les requêtes de regroupement d'effectuer
des statistiques sur vos données en utilisant à la place de la fonction
Regroupement ou Somme, les fonctions, Min, Max, Moyenne StDEV et Var.

La requête SQL ci-après permet en même temps d'afficher le minimum, le
maximum, la moyenne , l'écart type et variance du champ "Age" de la table
"Table1"

SELECT Min(Table1.Age) AS Minimum, Max(Table1.Age) AS Maximum,
Avg(Table1.Age) AS Moyenne, StDev(Table1.Age) AS [Ecart Type],
Var(Table1.Age) AS Variance
FROM Table1;

--
Cordialement
MehdiH

http://officeusers.blogspot.com/
_________________________________________



"Chevrot" a écrit dans le message de
groupe de discussion :
> Bonjour à tous, la météo est bonne.
>
> Je bute sur un problème stupide. Exite-t-il une formule dans Access 2003,
> qui permette de calculer dans une requête le minimum (resp. le maximum) de
> plusieurs champs des enregistrements d'une table?
>
> Par ailleurs, existe-t-il un moyen de calculer la moyenne et l'écart type
> des valeurs non nulles d'un champ sur les enregistrements d'une table?
>
> merci de m'éclairer.
>
> Alain

Avatar
Mehdi HAMMADI
Bonjour,
Désolé mais je n'ai pas de solution toute faite à vous proposer pour ce
problème.
Je reviendrais éventuellement vers vous si j'arrive à quelque chose.

Cordialement
MehdiH

"Chevrot" a écrit dans le message de
groupe de discussion :
Merci de votre réponse

Je me suis mal exprimé: en ce qui concerne les minimum et maximum, je
cherche un moyen d'afficher le minimum ou le maximum entre plusieurs
champs
d'un même enregistrement et non le minimum ou le maximum d'un champ dans
tous
les enregistrements.

merci de me donner la solution.

Alain

"Mehdi HAMMADI" a écrit :

Bonjour,

Vous avez la possibilité à travers les requêtes de regroupement
d'effectuer
des statistiques sur vos données en utilisant à la place de la fonction
Regroupement ou Somme, les fonctions, Min, Max, Moyenne StDEV et Var.

La requête SQL ci-après permet en même temps d'afficher le minimum, le
maximum, la moyenne , l'écart type et variance du champ "Age" de la table
"Table1"

SELECT Min(Table1.Age) AS Minimum, Max(Table1.Age) AS Maximum,
Avg(Table1.Age) AS Moyenne, StDev(Table1.Age) AS [Ecart Type],
Var(Table1.Age) AS Variance
FROM Table1;

--
Cordialement
MehdiH

http://officeusers.blogspot.com/
_________________________________________



"Chevrot" a écrit dans le message de
groupe de discussion :

> Bonjour à tous, la météo est bonne.
>
> Je bute sur un problème stupide. Exite-t-il une formule dans Access
> 2003,
> qui permette de calculer dans une requête le minimum (resp. le maximum)
> de
> plusieurs champs des enregistrements d'une table?
>
> Par ailleurs, existe-t-il un moyen de calculer la moyenne et l'écart
> type
> des valeurs non nulles d'un champ sur les enregistrements d'une table?
>
> merci de m'éclairer.
>
> Alain

Avatar
db
Chevrot a écrit :
Je bute sur un problème stupide. Exite-t-il une formule dans Access 2003,
qui permette de calculer dans une requête le minimum (resp. le maximum) de
plusieurs champs des enregistrements d'une table?




Bonjour,

Je ne pense pas qu'il existe de formule toute faite, mais je vous
propose une fonction vba qui pourrait faire l'affaire :

Function GetMax(ParamArray cols()) As Variant
Dim i As Byte, nCols As Byte, ret As Variant
If UBound(cols) = -1 Then
ret = Null
Else
ret = cols(LBound(cols))
For i = LBound(cols) To UBound(cols)
If cols(i) > ret Then
ret = cols(i)
End If
Next
End If
GetMax = ret
End Function


... qui s'appellerait comme ceci dans une requête sql :

Select GetMax(colonne1, colonne2, colonne3)
from Table

Le nombre de colonnes n'est pas limité.

On peut avoir de la même façon une fonction GetMin où on remplacerait
"If cols(i) > ret ... " pas "if cols(i)<ret..."

A vous de voir si ça peut vous aider.

db
Avatar
Gloops
Bonjour,

Au moment de la conception de la base, on peut structurer les tables en
fonction de ce besoin.

Plutôt que d'avoir un enregistrement avec VentesJanvier, VentesFevri er,
VentesMars, et ainsi de suite, on peut avoir une table de ventes qui
comporte les champs voulus pour lier ... au vendeur et au produit, plus
un champ numéro de mois, et un champ montant. De cette manière, en
fournissant les critères voulus on applique les opérateurs SQL aux
enregistrements qui vont bien, qui peuvent par exemple concerner un
vendeur, un produit et douze mois de l'année.

Si on préfère vraiment, pour une raison ou pour une autre, mett re les
douze champs sur le même enregistrement (par exemple parce qu'on a f ait
comme ça et qu'on n'a pas envie de tout refaire), on peut effectuer le
traitement en dehors de la base comme le suggère db.

______________________________________
Chevrot a écrit, le 16/03/2010 09:09 :
Bonjour à tous, la météo est bonne.

Je bute sur un problème stupide. Exite-t-il une formule dans Acces s 2003,
qui permette de calculer dans une requête le minimum (resp. le max imum) de
plusieurs champs des enregistrements d'une table?

Par ailleurs, existe-t-il un moyen de calculer la moyenne et l'éca rt type
des valeurs non nulles d'un champ sur les enregistrements d'une table?

merci de m'éclairer.

Alain
Avatar
Chevrot
Merci de vos réponses.

Comme je ne suis pas très familer avec ce type de procédure, pouvez vous
m'expliquer comment insérer mes propres paramètres (nom de la table nom des
colonnes dans la fonction.

Le nom de ma table est Modir (comportant les champs MOK01, MOK02, MOK03 etc
jusqu'à 15) et le nom de ma requête est Modir02.

Jrai compreis que j'insère dans la requête SQL:
Select GetMax(Mok01, Mok02, Mok03)
from Modir



Par contre, comment personnaliser la fonction?

merci

Alain


"db" a écrit :

Chevrot a écrit :
> Je bute sur un problème stupide. Exite-t-il une formule dans Access 2003,
> qui permette de calculer dans une requête le minimum (resp. le maximum) de
> plusieurs champs des enregistrements d'une table?


Bonjour,

Je ne pense pas qu'il existe de formule toute faite, mais je vous
propose une fonction vba qui pourrait faire l'affaire :

Function GetMax(ParamArray cols()) As Variant
Dim i As Byte, nCols As Byte, ret As Variant
If UBound(cols) = -1 Then
ret = Null
Else
ret = cols(LBound(cols))
For i = LBound(cols) To UBound(cols)
If cols(i) > ret Then
ret = cols(i)
End If
Next
End If
GetMax = ret
End Function


.... qui s'appellerait comme ceci dans une requête sql :

Select GetMax(colonne1, colonne2, colonne3)
from Table

Le nombre de colonnes n'est pas limité.

On peut avoir de la même façon une fonction GetMin où on remplacerait
"If cols(i) > ret ... " pas "if cols(i)<ret..."

A vous de voir si ça peut vous aider.

db
.

Avatar
Michel__D
Bonjour,

Chevrot a écrit :
Merci de vos réponses.

Comme je ne suis pas très familer avec ce type de procédure, pouvez vous
m'expliquer comment insérer mes propres paramètres (nom de la table nom des
colonnes dans la fonction.

Le nom de ma table est Modir (comportant les champs MOK01, MOK02, MOK03 etc
jusqu'à 15) et le nom de ma requête est Modir02.

Jrai compreis que j'insère dans la requête SQL:
Select GetMax(Mok01, Mok02, Mok03)



Autre solution, tu réorganise tes données avec une requête union
(affichage mode SQL) :

SELECT T.ClePrimaire, "MOK01" AS ChampOrig, T.MOK01 AS ValeurChamp
FROM Modir AS T
UNION
SELECT T.ClePrimaire, "MOK02" AS ChampOrig, T.MOK02 AS ValeurChamp
FROM Modir AS T
UNION
SELECT T.ClePrimaire, "MOK03" AS ChampOrig, T.MOK03 AS ValeurChamp
FROM Modir AS T
UNION
SELECT T.ClePrimaire, "MOK04" AS ChampOrig, T.MOK04 AS ValeurChamp
FROM Modir AS T
UNION
SELECT T.ClePrimaire, "MOK05" AS ChampOrig, T.MOK05 AS ValeurChamp
FROM Modir AS T
UNION
SELECT T.ClePrimaire, "MOK06" AS ChampOrig, T.MOK06 AS ValeurChamp
FROM Modir AS T
UNION
SELECT T.ClePrimaire, "MOK07" AS ChampOrig, T.MOK07 AS ValeurChamp
FROM Modir AS T
UNION
SELECT T.ClePrimaire, "MOK08" AS ChampOrig, T.MOK08 AS ValeurChamp
FROM Modir AS T
UNION
SELECT T.ClePrimaire, "MOK09" AS ChampOrig, T.MOK09 AS ValeurChamp
FROM Modir AS T
UNION
SELECT T.ClePrimaire, "MOK010" AS ChampOrig, T.MOK010 AS ValeurChamp
FROM Modir AS T
UNION
SELECT T.ClePrimaire, "MOK011" AS ChampOrig, T.MOK011 AS ValeurChamp
FROM Modir AS T
UNION
SELECT T.ClePrimaire, "MOK012" AS ChampOrig, T.MOK012 AS ValeurChamp
FROM Modir AS T
UNION
SELECT T.ClePrimaire, "MOK013" AS ChampOrig, T.MOK013 AS ValeurChamp
FROM Modir AS T
UNION
SELECT T.ClePrimaire, "MOK014" AS ChampOrig, T.MOK014 AS ValeurChamp
FROM Modir AS T
UNION
SELECT T.ClePrimaire, "MOK015" AS ChampOrig, T.MOK015 AS ValeurChamp
FROM Modir AS T;

Ensuite tu utilise les fonctions SQL classiques de regroupement :

SELECT T.ClePrimaire, Min(T.ValeurChamp) AS ValeurMini
FROM LaRequeteUnion AS T
GROUP BY T.ClePrimaire;

SELECT T.ClePrimaire, Max(T.ValeurChamp) AS ValeurMaxi
FROM LaRequeteUnion AS T
GROUP BY T.ClePrimaire;
Avatar
db
Chevrot a écrit :

Le nom de ma table est Modir (comportant les champs MOK01, MOK02, MOK03 etc
jusqu'à 15) et le nom de ma requête est Modir02.

Jrai compreis que j'insère dans la requête SQL:
Select GetMax(Mok01, Mok02, Mok03)
from Modir





Le nombre de colonnes n'étant pas limité, vous pouvez écrire :

Select GetMax(Mok01, Mok02, Mok03, Mok04, ...et ainsi de suite
jusqu'à..., Mok15)
from Modir


Par contre, comment personnaliser la fonction?



Qu'entendez-vous par "personnaliser la fonction" ?

db
Avatar
Chevrot
Ma question visait à savoir si je devais, dans la fonction, recopier la
fonction telle quelle, ou bien remplacer tel ou tel mot par, par exemple, le
nom de la table que j'utilise.



Merci

Alain


"db" a écrit :

Chevrot a écrit :

> Le nom de ma table est Modir (comportant les champs MOK01, MOK02, MOK03 etc
> jusqu'à 15) et le nom de ma requête est Modir02.
>
> Jrai compreis que j'insère dans la requête SQL:
> Select GetMax(Mok01, Mok02, Mok03)
>> from Modir

Le nombre de colonnes n'étant pas limité, vous pouvez écrire :

Select GetMax(Mok01, Mok02, Mok03, Mok04, ...et ainsi de suite
jusqu'à..., Mok15)
from Modir


> Par contre, comment personnaliser la fonction?

Qu'entendez-vous par "personnaliser la fonction" ?

db
.

Avatar
db
Chevrot a écrit :
Ma question visait à savoir si je devais, dans la fonction, recopier la
fonction telle quelle, ou bien remplacer tel ou tel mot par, par exemple, le
nom de la table que j'utilise.





Vous pouvez l'utiliser telle quelle : il n'y a pas de référence
explicite à la table, ni aux colonnes.

db
1 2