0
点赞
收藏
分享

微信扫一扫

leetcode中等之1193.每月交易I

求阙者 2022-04-30 阅读 118

Table: Transactions

Column NameType
idint
countryvarchar
stateenum
amountint
trans_datedate

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

问题

编写一个 sql 查询来查找每个月和每个国家/地区的事务数及其总金额、已批准的事务数及其总金额。

以 任意顺序 返回结果表。

示例 1:

输入:

Transactions table:

idcountrystateamounttrans_date
121USapproved10002018-12-18
122USdeclined20002018-12-19
123USapproved20002019-01-01
124DEapproved20002019-01-07

输出:

monthcountrytrans_countapproved_counttrans_total_amountapproved_total_amount
2018-12US2130001000
2019-01US1120002000
2019-01DE1120002000

解答

select
    left(trans_date,7) month,
    country,
    count(state) trans_count,
    sum(state='approved')  approved_count,   #1
    sum(amount) trans_total_amount,
    sum(if(state='approved',amount,0)) approved_total_amount
from transactions
group by month,country

逻辑很简单,但是对count()和sum()要求掌握很熟练,才能用对。
比如1处,求已批准的事务数,要么sum(state=‘approved’)—符合条件的+1,要么count(if(state=‘approved’,1,null)—count()不对null值计数,而不能是count(state=‘approved’),这样不管记录是否满足条件表达式,只要非NULL就加1。

举报

相关推荐

0 条评论