sql查询SUM IF GROUP BY

时间:2015-05-14 11:55:25

标签: mysql

这是我的餐费:

id2 name exp date ...
1  Jack 2
2  Joe  3.1
3  Marian 5.8
1  Jack  2
1  Jack  4
3  Marian 3

我想要这个查询:总结所有人的费用,如果费用超过5则回复它。

如果部分(如果超过5)我有问题。我按id2和SUM(exp)分组并且工作正常,但我不知道如何暗示IF。我写了SUM(IF(exp >= 5, 1, 0))但是sql错误说不是正确的组功能。

S`ELECT id2, SUM(IF(exp >= 5, 1, 0)) as ex FROM expense GROUP BY id2`

如果您能帮助我查询,我感谢您。 感谢

2 个答案:

答案 0 :(得分:1)

这可能是你想要的:

SELECT id2, SUM(exp),
       GROUP_CONCAT(CASE WHEN exp > 5 THEN exp END) as ExpsGreaterThan5
FROM expense
GROUP BY id2;

答案 1 :(得分:1)

select id2,name,sum(exp) from expense group by user_id having sum(exp)>5