我想知道用于显示不使用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
答案 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的回答。它更安全,并且无论如何都会有性能损失。