每日一题-41(每月交易Ⅰ)

题41:

根据下表编写一个 sql 查询来查找每个月和每个国家/地区的事务数及其总金额、已批准的事务数及其总金额。
在这里插入图片描述
其中:

  • id是这个表的主键;
  • 此表包含有关传入事务的信息;
  • state列类型为"[“批准”,“拒绝”]之一。

解题思路:
(1)查找每个月和每个国家/地区,由于表中的日期精确到日,因此利用date_format()函数将日期按年月输入,再获取所有的月份后,使用GROUP BY聚合每个月和每个国家的记录;
(2)查找总的事物数,只需要使用count()函数就能获取到总的事务数;
(3)查找总金额,使用sum()函数计算总金额;
(4)查找已批准的事物数,先使用if()函数将state ='approved’的记录标记为1,否则为NULL,然后使用count()计算总量;
(5)查找已批准的事物的总金额,与第(4)相同。
具体代码如下:

select date_format(trans_date, '%Y-%m') as month,
    country,
    count(*) as  trans_count,
    count(if(state = 'approved', 1,null)) as approved_count,
    sum(amount) as trans_total_amount,
    sum(if(state = 'approved', amount, 0)) as approved_total_amount
from Transactions
group by month, country;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值