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

Le
tcheb1
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.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
OokieDookie
Le #11858081
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.




tcheb1
Le #11858071
On 3 mai, 11:39, 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é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 :-/
OokieDookie
Le #11858061
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 > 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 :-/




Fred BROUARD
Le #11858051
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 ***********************
tcheb1
Le #11858001
On 3 mai, 13:30, 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 à 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....
Publicité
Poster une réponse
Anonyme