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

problème avec la fonction d'agrégat 'AVG'

5 réponses
Avatar
tcheb1
Bonjour,

j'utilise Microsoft SQL serveur 2003 par le bias de Microsoft System
Management Server 2003.
Le but de ma requete =E9tant d'avoir le moyenne de taille des
fichiers .pst par utilisateurs.

Lors de l'executiuon de cette requ=E8te (le champs FileSize est un
'int')

select SYS.User_Name0,avg(SF.FileSize) as taille_moyenne
>From v_GS_SoftwareFile SF, v_R_System SYS
Where SYS.ResourceID =3D SF.ResourceID
and SF.FileName LIKE '%.pst%'
and SYS.Netbios_Name0 LIKE '%PC%'
group by SYS.User_Name0

J'ai ce message d'erreur ---> D=E9passement de capacit=E9 lors de la
conversion de expression au type de donn=E9es int.

Effectivement la valeur du champs Sf.FileSize est assez grande, et la
somme de tous ces champs (par utilisateurs) d=E9passe les sp=E9cification
du type de donn=E9es 'entier'. Ceci dit je ne fais pas une somme, mais
une moyenne .... (a lui de se d=E9brouiller pour changer le type de
donn=E9e...)

Est-ce un Bug Microsoft SQL Server ??
Est-on oblig=E9 de changer le type du champs FileSize ??
Dois-je passer par une vue (pour diviser tous les champs avant des
faire leur somme, pour faire la moyenne '=E0 la main') ??

Merci d'avance des vos r=E9ponses.

5 réponses

Avatar
OokieDookie
Bonjour,

Essayez d'utiliser la syntaxe avg(CAST(SF.FileSize AS BIGINT) as
taille_moyenne

HTH,

"" a écrit :

Bonjour,

j'utilise Microsoft SQL serveur 2003 par le bias de Microsoft System
Management Server 2003.
Le but de ma requete étant d'avoir le moyenne de taille des
fichiers .pst par utilisateurs.

Lors de l'executiuon de cette requète (le champs FileSize est un
'int')

select SYS.User_Name0,avg(SF.FileSize) as taille_moyenne
>From v_GS_SoftwareFile SF, v_R_System SYS
Where SYS.ResourceID = SF.ResourceID
and SF.FileName LIKE '%.pst%'
and SYS.Netbios_Name0 LIKE '%PC%'
group by SYS.User_Name0

J'ai ce message d'erreur ---> Dépassement de capacité lors de la
conversion de expression au type de données int.

Effectivement la valeur du champs Sf.FileSize est assez grande, et la
somme de tous ces champs (par utilisateurs) dépasse les spécification
du type de données 'entier'. Ceci dit je ne fais pas une somme, mais
une moyenne .... (a lui de se débrouiller pour changer le type de
donnée...)

Est-ce un Bug Microsoft SQL Server ??
Est-on obligé de changer le type du champs FileSize ??
Dois-je passer par une vue (pour diviser tous les champs avant des
faire leur somme, pour faire la moyenne 'à la main') ??

Merci d'avance des vos réponses.




Avatar
tcheb1
On 3 mai, 11:39, OokieDookie wrote:
Bonjour,

Essayez d'utiliser la syntaxe avg(CAST(SF.FileSize AS BIGINT) as
taille_moyenne

HTH,

"" a écrit :



> Bonjour,

> j'utilise Microsoft SQL serveur 2003 par le bias de Microsoft System
> Management Server 2003.
> Le but de ma requete étant d'avoir le moyenne de taille des
> fichiers .pst par utilisateurs.

> Lors de l'executiuon de cette requète (le champs FileSize est un
> 'int')

> select SYS.User_Name0,avg(SF.FileSize) as taille_moyenne
> >From v_GS_SoftwareFile SF, v_R_System SYS
> Where SYS.ResourceID = SF.ResourceID
> and SF.FileName LIKE '%.pst%'
> and SYS.Netbios_Name0 LIKE '%PC%'
> group by SYS.User_Name0

> J'ai ce message d'erreur ---> Dépassement de capacité lors de la
> conversion de expression au type de données int.

> Effectivement la valeur du champs Sf.FileSize est assez grande, et la
> somme de tous ces champs (par utilisateurs) dépasse les spécificati on
> du type de données 'entier'. Ceci dit je ne fais pas une somme, mais
> une moyenne .... (a lui de se débrouiller pour changer le type de
> donnée...)

> Est-ce un Bug Microsoft SQL Server ??
> Est-on obligé de changer le type du champs FileSize ??
> Dois-je passer par une vue (pour diviser tous les champs avant des
> faire leur somme, pour faire la moyenne 'à la main') ??

> Merci d'avance des vos réponses.- Masquer le texte des messages pré cédents -

- Afficher le texte des messages précédents -



ok, sa fonctionne tres bien... donc on est obligé de 'caster' le
type..... c'est quand même pas terrible :-/
Avatar
OokieDookie
Re,

Effectivement c'est un peu contraignant, mais je trouve tout de même heureux
qu'un SGBDR ne prenne pas d'initiative tout seul. Peut-être est-ce une option
à envisager pour les prochaines moutures ?

Bonne fin de journée.

"" a écrit :

On 3 mai, 11:39, OokieDookie wrote:
> Bonjour,
>
> Essayez d'utiliser la syntaxe avg(CAST(SF.FileSize AS BIGINT) as
> taille_moyenne
>
> HTH,
>
> "" a écrit :
>
>
>
> > Bonjour,
>
> > j'utilise Microsoft SQL serveur 2003 par le bias de Microsoft System
> > Management Server 2003.
> > Le but de ma requete étant d'avoir le moyenne de taille des
> > fichiers .pst par utilisateurs.
>
> > Lors de l'executiuon de cette requète (le champs FileSize est un
> > 'int')
>
> > select SYS.User_Name0,avg(SF.FileSize) as taille_moyenne
> > >From v_GS_SoftwareFile SF, v_R_System SYS
> > Where SYS.ResourceID = SF.ResourceID
> > and SF.FileName LIKE '%.pst%'
> > and SYS.Netbios_Name0 LIKE '%PC%'
> > group by SYS.User_Name0
>
> > J'ai ce message d'erreur ---> Dépassement de capacité lors de la
> > conversion de expression au type de données int.
>
> > Effectivement la valeur du champs Sf.FileSize est assez grande, et la
> > somme de tous ces champs (par utilisateurs) dépasse les spécification
> > du type de données 'entier'. Ceci dit je ne fais pas une somme, mais
> > une moyenne .... (a lui de se débrouiller pour changer le type de
> > donnée...)
>
> > Est-ce un Bug Microsoft SQL Server ??
> > Est-on obligé de changer le type du champs FileSize ??
> > Dois-je passer par une vue (pour diviser tous les champs avant des
> > faire leur somme, pour faire la moyenne 'à la main') ??
>
> > Merci d'avance des vos réponses.- Masquer le texte des messages précédents -
>
> - Afficher le texte des messages précédents -

ok, sa fonctionne tres bien... donc on est obligé de 'caster' le
type..... c'est quand même pas terrible :-/




Avatar
Fred BROUARD
a écrit :


ok, sa fonctionne tres bien... donc on est obligé de 'caster' le
type..... c'est quand même pas terrible :-/



C'est la norme... Un SGBDR ne saurait changer le type de données à la
volée pour vous faire plaisir ! imaginez derrière qu'il y ait à piloter
une fusée... Et que les interfaces électroniques ne supportent pas le
type entier 64 bits.. que va faire votre fusée ?
Exploser !
C'est ce qui est arrivé au premier vol de Ariane V !
http://homepages.inf.ed.ac.uk/perdita/Book/ariane5rep.html
http://rangiroa.essi.fr/cours/systeme2/02-tolerance-pannes.pdf

A +






--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
Avatar
tcheb1
On 3 mai, 13:30, Fred BROUARD wrote:
a écrit :



> ok, sa fonctionne tres bien... donc on est obligé de 'caster' le
> type..... c'est quand même pas terrible :-/

C'est la norme... Un SGBDR ne saurait changer le type de données à la
volée pour vous faire plaisir ! imaginez derrière qu'il y ait à pil oter
une fusée... Et que les interfaces électroniques ne supportent pas le
type entier 64 bits.. que va faire votre fusée ?
Exploser !
C'est ce qui est arrivé au premier vol de Ariane V !http://homepages.in f.ed.ac.uk/perdita/Book/ariane5rep.htmlhttp://rangiroa.essi.fr/cours/syst eme2/02-tolerance-pannes.pdf

A +



--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langag e SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
*********************http://www.datasapiens.com***********************



la moyenne étant forcement comprise dans la limite du type de données
utilisé (int dans notre cas), il pourrait très bien faire une somme
sur 64bits 'temporaire' pour calculer la moyenne ... ca ne pose aucun
problème, sa ne change pas le type de donnée....