我想知道用于显示不使用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 |量
1 | 15
1 | 15
2 | 22
2 | 22
2 | 22
我想显示total_montant = 37但不是
id_721z |量
1 | 30
2 | 66
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
这将总结所有不同的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的回答。它更安全,更明显会产生性能损失。