MySQL 与 group by 的案例

标签 mysql group-by case

我有一个表(名称=费用),如下所示:

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);

我想知道是否有一种方法可以组合这两个查询并检索收入费用,并按月将其分组到单个查询中.

最佳答案

是的,您需要一份案例陈述:

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);

关于MySQL 与 group by 的案例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29553709/

相关文章:

php - 如何使用已弃用的 mysql_* 函数成功重写旧的 mysql-php 代码?

MySQL - 返回匹配查询数据的行数?

mysql - sql分组计算

python - 基于groupby过滤pandas数据框(仅前3个)

sql - SQL Server中如何合并不同的行?

r - 寻找在存在 NA 时使用 ifelse 的 R 函数

scala - 将函数转换为部分函数 scala

php - mysql 结果存入 php 数组

php - PHP 数据库查询中的 Declare 函数等效项是什么?

mysql - WordPress 查询时间慢