2015-01-21 4 views
2

SUM 함수 및 DISTINCT를 사용하여 반복하지 않는 다양한 클라이언트의 총계를 표시 한 요청을 알고 싶습니다.SQL SUM + Disctinct

내가 사용 :

SELECT DISTINCT id_721z, SUM(montant) AS somme_montant 
FROM `roue_ventes_cb` 
WHERE `date_transaction` between '2015/01/01' and '2015/01/21'; 

그러나 결과가 제대로 표시되지 않습니다. 이 데이터를 가지고 있습니다 :

id_721z | MONTANT (몽땅)

1 | 15 
1 | 15 
2 | 22 
2 | 22 
2 | 22 

내가 total_montant = 37가 아니라

id_721z을 보여 드리고자 |

1 | 30 
2 | 66 
+2

출력을 샘플링하고 그 이유를 설명 할 수 있습니까? sqlfiddle.com 사용을 고려하십시오 –

+0

반복 고객 때문에 총 금액이 부풀려졌습니다 –

답변

2
SELECT SUM(montant) AS somme_montant 
FROM (
    SELECT DISTINCT id_721z, montant 
    FROM `roue_ventes_cb` 
    WHERE `date_transaction` between '2015/01/01' and '2015/01/21' 
) AS t 
+0

아니오이 쿼리를 원하지 않습니다. –

+0

대답의 상단에 내 응답을보십시오 –

+2

@Aymedmedamine : 375를 원하면 eumiro의 대답이 옳습니다. –

0

MONTANT (몽땅)이 모든 다른 montants을 요약합니다. 그러나 두 개의 id가 동일한 montant를 갖는 경우에는 한 번만 계산됩니다.

SELECT id_721z, SUM(DISTINCT montant) AS somme_montant 
FROM `roue_ventes_cb` 
WHERE `date_transaction` between '2015/01/01' and '2015/01/21'; 

그래서 어떤 경우에도 emiros 대답을 선호합니다. 그것은 더 안전하고 distint는 성과 패널티를 가질 것입니다.