SQL SUM + Distinct

问题描述 投票:3回答:2

我想知道用于显示不使用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
mysql sql
2个回答
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
投票

这将总结所有不同的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的回答。它更安全,更明显会产生性能损失。

© www.soinside.com 2019 - 2024. All rights reserved.