SQL SUM + Distinct

时间:2015-01-21 11:10:11

标签: mysql sql

我想知道用于显示不使用SUM函数和DISTINCT重复的各种客户端数量总和的请求。

我用过:

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 | montant

1   |   30
2   |   66

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

这将总结所有不同的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的回答。它更安全,并且无论如何都会有性能损失。