MySQL 分组依据案例
MySQL Case with group by
我有一个像这样的 table (name=expense):
id amount date
1 -1687 2014-01-02 00:00:00.0
2 11000 2014-01-02 00:00:00.0
3 1500 2014-01-03 00:00:00.0
4 -3800 2014-01-03 00:00:00.0
5 119500 2014-01-01 00:00:00.0
6 -2999 2014-01-04 00:00:00.0
7 5972 2014-01-04 00:00:00.0
..
8 7208 2014-12-31 00:00:00.0
我能够检索 收入 并按月分组,如下所示:
SELECT
SUM(amount),
date
FROM expense
WHERE YEAR(now()) = YEAR(date) AND amount>0
GROUP BY MONTH(date);
我能够检索 费用 并按月分组,如下所示:
SELECT
SUM(amount),
date
FROM expense
WHERE YEAR(now()) = YEAR(date) AND amount<=0
GROUP BY MONTH(date);
我想知道是否有办法合并这两个查询并检索 income 和 expense 并按月分组在 单个查询中 .
是的,您需要一个 Case 语句:
SELECT
sum(case when amount> 0 then amount end) as income,
sum(case when amount<=0 then amount end) as expense,
date
FROM expense
WHERE YEAR(now()) = YEAR(date)
GROUP BY MONTH(date);
我有一个像这样的 table (name=expense):
id amount date
1 -1687 2014-01-02 00:00:00.0
2 11000 2014-01-02 00:00:00.0
3 1500 2014-01-03 00:00:00.0
4 -3800 2014-01-03 00:00:00.0
5 119500 2014-01-01 00:00:00.0
6 -2999 2014-01-04 00:00:00.0
7 5972 2014-01-04 00:00:00.0
..
8 7208 2014-12-31 00:00:00.0
我能够检索 收入 并按月分组,如下所示:
SELECT
SUM(amount),
date
FROM expense
WHERE YEAR(now()) = YEAR(date) AND amount>0
GROUP BY MONTH(date);
我能够检索 费用 并按月分组,如下所示:
SELECT
SUM(amount),
date
FROM expense
WHERE YEAR(now()) = YEAR(date) AND amount<=0
GROUP BY MONTH(date);
我想知道是否有办法合并这两个查询并检索 income 和 expense 并按月分组在 单个查询中 .
是的,您需要一个 Case 语句:
SELECT
sum(case when amount> 0 then amount end) as income,
sum(case when amount<=0 then amount end) as expense,
date
FROM expense
WHERE YEAR(now()) = YEAR(date)
GROUP BY MONTH(date);