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

  1. 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
  2. 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
  3. 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
  4. 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