Mysql 如何在sql中对多个列进行分组
我的桌子如下所示Mysql 如何在sql中对多个列进行分组,mysql,sql,Mysql,Sql,我的桌子如下所示 ID EMP_ID AMOUNT MODE 1 E01 1000 CASH 2 E01 2000 CASH 3 E01 3000 DD 4 E01 1000 DD 5 E02 1500 CASH 6 E02 2000 DD 我想计算每个Emp支付的总金额,以及基于模式支付的金额总和。 例如,我希望结果为'7000'作为总额,'3000'作为现金,'4000'作为E
ID EMP_ID AMOUNT MODE
1 E01 1000 CASH
2 E01 2000 CASH
3 E01 3000 DD
4 E01 1000 DD
5 E02 1500 CASH
6 E02 2000 DD
我想计算每个Emp支付的总金额,以及基于模式支付的金额总和。
例如,我希望结果为'7000'作为总额,'3000'作为现金,'4000'作为E01的DD
我尝试了下面的查询,但无法得到上面的结果
select sum(AMOUNT) as totalAmount from fees where EMP_ID = 'E01' group by mop
有人能提出一个查询以获得上述结果吗
编辑:
我想要如下所示的结果表
ID EMP_ID TOTAL_AMOUNT CASH_AMOUNT DD_AMOUNT
1 E01 7000 3000 4000
2 E02 3500 1500 2000
将求和函数与IF函数结合使用:
SELECT EMP_ID,
SUM(amount) AS TOTA_AMOUNT,
SUM(IF(`mode` = 'CASH', amount, 0)) AS CASH_AMOUNT,
SUM(IF(`mode` = 'DD', amount, 0)) AS DD_AMOUNT
FROM fees
GROUP BY emp_id
SQL Fiddle:对现金/dd求和的用例:
select EMP_ID,
sum(AMOUNT) as totalAmount,
sum(case when MODE = 'CASH' then AMOUNT else 0 end) as CASH_AMOUNT,
sum(case when MODE = 'DD' then AMOUNT else 0 end) as DD_AMOUNT
from fees
group by EMP_ID
您正在使用MySQL和SQL Server吗?(如果没有,则取消标记未使用的。)向我们显示想要的结果(使用已经给出的sampe数据。)@jarlh我已为上述样本数据添加了结果表。当您有100名员工时会发生什么?非常感谢jordi。。这就是我要找的。完美的