1193.每月交易 I
| 序号 | 题目 | 难度 |
|---|---|---|
| 1193 | 题目链接 | 中等 |
题目大意
编写一个 sql 查询来查找每个月和每个国家/地区的事务数及其总金额、已批准的事务数及其总金额。
以 任意顺序 返回结果表。
表:Transactions
| Column Name | Type |
|---|---|
| id | int |
| country | varchar |
| state | enum |
| amount | int |
| trans_date | date |
id 是这个表的主键。
该表包含有关传入事务的信息。
state 列类型为 ["approved", "declined"] 之一。
示例
输入
Transactions table:
| id | country | state | amount | trans_date |
|---|---|---|---|---|
| 121 | US | approved | 1000 | 2018-12-18 |
| 122 | US | declined | 2000 | 2018-12-19 |
| 123 | US | approved | 2000 | 2019-01-01 |
| 124 | DE | approved | 2000 | 2019-01-07 |
输出
| month | country | trans_count | approved_count | trans_total_amount | approved_total_amount |
|---|---|---|---|---|---|
| 2018-12 | US | 2 | 1 | 3000 | 1000 |
| 2019-01 | US | 1 | 1 | 2000 | 2000 |
| 2019-01 | DE | 1 | 1 | 2000 | 2000 |
参考答案
select
substr(trans_date,1,7) month
,country
,count(1) trans_count
,sum(case when state = 'approved' then 1 else 0 end) approved_count
,sum(amount) trans_total_amount
,sum(case when state = 'approved' then amount else 0 end) approved_total_amount
from Transactions
group by 1,2
;