如何在子查询中使用sum函数?

时间:2015-10-08 15:55:40

标签: sql db2 subquery

我正在使用IBM DB2 DBMS,我想显示每个客户支付的总金额。目前,当我选择全部时,它会显示每个客户的多个付款金额,这会导致重复客户。

我想显示每个客户支付的总金额,而不是我表格中的任意数字。

这就是我到目前为止所拥有的。我的子查询出错了。

SELECT T1.CLIENT_ID 
    (SELECT SUM(T2.PAY_AMT) FROM AR_SUM T2 WHERE T1.CLIENT_ID = T2.CLIENT_ID) AS TOTAL
    FROM AR_SUM T1
    GROUP BY CLIENT_ID
FETCH FIRST 100 ROWS ONLY

我希望它显示:

Client_ID     TOTAL
abc           100
def           200
ghi           150

正如我之前提到的,我想将其与我桌子中没有的任意目标数量进行比较。另外,有没有办法将其转换为百分比?

我想要的最终产品:

Client_ID     TOTAL     percent of total <-- (lets say out of 100)
abc           10        .10 or 10% <-- if possible 
def           20        .2
ghi           15        .15

1 个答案:

答案 0 :(得分:0)

如上所述,您的查询缺少逗号:

SELECT T1.CLIENT_ID,
-------------------^
       (SELECT SUM(T2.PAY_AMT) 
        FROM AR_SUM T2 
        WHERE T1.CLIENT_ID = T2.CLIENT_ID) AS TOTAL
FROM AR_SUM T1
GROUP BY CLIENT_ID
FETCH FIRST 100 ROWS ONLY;

但使用聚合函数更简单:

SELECT T.CLIENT_ID, SUM(T.PAY_AMT) AS TOTAL
FROM AR_SUM T
GROUP BY t.CLIENT_ID
FETCH FIRST 100 ROWS ONLY;