Requete avec somme, critere et group by

didou -  
 didou -
Bonjour,

Je voudrais realisé une requete qui permet :
de calculer la somme du delaisSaisie avec certaine condition mais le probleme c'est que j'ai aussi des doublons .
Ma requete :

select sum('DelaisSaisie')
FROM 'tbl_refco'
WHERE 'DelaisSaisie'
BETWEEN 0
AND 365
AND month( 'CDG_Date_Statut_Octave' )
IN ( 5, 6 )
AND year( 'CDG_Date_Statut' ) =2010
group by 'NumContrat'

le resultat retourné est :
sum(DelaisSaisie)
63
174
13
3
21
6
76
26
0
4
14
9
19
3
0
0
0
3
11
11
11
11
5
0
19
32
0
4
58
0

Ce sont bien les données qu'il me faut , mais je voudrais le somme de tt ça .
Biensur j'ai penser à enlever le group by mais dans se cas là , j'ai qu'un seul resultat ( la somme) , mais e resultat n'est pas bon car il prend des doublons .

Si quelqu'un assai caller en SQL pourrais m'aidé sa serrai sympa

Merci .

4 réponses

Defouille Messages postés 404 Statut Membre 54
 
Tu dois donner un nom a ton select.
SELECT SUM(tbl_temp.nb) FROM (
    select sum('DelaisSaisie') as nb
    FROM 'tbl_refco'
    WHERE 'DelaisSaisie'
    BETWEEN 0
    AND 365
    AND month( 'CDG_Date_Statut_Octave' )
    IN ( 5, 6 )
    AND year( 'CDG_Date_Statut' ) =2010
    group by 'NumContrat' 
) AS tbl_temp

1
Defouille Messages postés 404 Statut Membre 54
 
Bonjour,

tu pourrais essayer avec une requête imbriquée :

SELECT SUM(nb) FROM (
    select sum('DelaisSaisie') as nb
    FROM 'tbl_refco'
    WHERE 'DelaisSaisie'
    BETWEEN 0
    AND 365
    AND month( 'CDG_Date_Statut_Octave' )
    IN ( 5, 6 )
    AND year( 'CDG_Date_Statut' ) =2010
    group by 'NumContrat' 
)

0
didou
 
J'ai essayé comme tu ma dit c.a.d :

SELECT sum( nb )
FROM (
SELECT sum( 'DelaisSaisie' ) AS nb
FROM 'tbl_refco'
WHERE 'DelaisSaisie'
BETWEEN 0
AND 365
AND month( 'CDG_Date_Statut_Octave' )
IN ( 5, 6 )
AND year( 'CDG_Date_Statut_Octave' ) =2010
GROUP BY 'NumContrat_Avenant'
)

Et PhpMyAdmin ma genere une ereure :

Every derived table must have its own alias
Chaque table dérivée doit avoir son propre alias

Apparement la requete imbrique ne marche pas .

Jte remercie quand mm pour ton aide .

Si ta d'autres idée n'esite pas .
0
didou
 
ça marche !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Au debut j'ai le méme resultat que si je fait seulement :

select sum('DelaisSaisie')
FROM 'tbl_refco'
WHERE 'DelaisSaisie'
BETWEEN 0
AND 365
AND month( 'CDG_Date_Statut_Octave' )
IN ( 5, 6 )
AND year( 'CDG_Date_Statut' ) =2010
group by 'NumContrat'

Mais en rajoutant un distinct devant 'DelaisSaisie' , je trouve le bon resultat .

SELECT sum( nb )
FROM (

SELECT sum( DISTINCT 'DelaisSaisie' ) AS nb
FROM 'tbl_refco'
WHERE 'DelaisSaisie'
BETWEEN 0
AND 365
AND month( 'CDG_Date_Statut_Octave' )
IN ( 5, 6 )
AND year( 'CDG_Date_Statut_Octave' ) =2010
GROUP BY 'NumContrat_Avenant'
) AS tbl_temp

Merci beaucoup pour ton aide .
0