当前位置: 首页 > news >正文

详解力扣高频SQL50题之1193. 每月交易 I【简单】

传送门:1193. 每月交易 I

题目

表:Transactions

±--------------±--------+
| Column Name | Type |
±--------------±--------+
| id | int |
| country | varchar |
| state | enum |
| amount | int |
| trans_date | date |
±--------------±--------+
id 是这个表的主键。
该表包含有关传入事务的信息。
state 列类型为 [“approved”, “declined”] 之一。

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

以 任意顺序 返回结果表。

查询结果格式如下所示。

示例 1:

输入:
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 |
±---------±--------±------------±---------------±-------------------±----------------------+

解析

官方又在唬人了,这题看着返回字段多,其实不难,应该是简单难度而不是中等。首先按月份和国家分组,提取月份不同数据库有不同实现,由于本人用的是oracle,所以用to_char()函数。其次,事务个数用count(*)统计全组,批准个数用sum()+case when,当事务批准时返回1,否则返回0,总交易金额用sum()统计全组,批准总金额用sum()+case when,当事务批准时返回金额,否则返回0。

算法(Oracle)

查询事务表,按国家和月份分组,其中月份用to_char()获取,再用count()统计事务个数,用sum()+case when统计批准个数,当事务批准时返回1,否则返回0,用sum()统计总交易金额,用sum()+case when统计批准总金额,当事务批准时返回金额,否则返回0,最后返回月份,国家,事务个数,批准个数,总交易金额,批准总金额。

代码(Oracle)

select to_char(trans_date,'yyyy-mm') as month,country,
count(*) as trans_count,
sum(case when state='approved' then 1 else 0 end)as approved_count,
sum(amount) as trans_total_amount,
sum(case when state='approved' then amount else 0 end)
as approved_total_amount
from Transactions
group by country,to_char(trans_date,'yyyy-mm');
http://www.xdnf.cn/news/1188217.html

相关文章:

  • MySQL操作进阶
  • 1. 多线程开发
  • 【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 热词评论查询功能实现
  • 机器学习(重学版)基础篇(概念与评估)
  • Qt 远程过程调用(RPC)实现方案
  • 大模型应用班-第2课 DeepSeek使用与提示词工程课程重点 学习ollama 安装 用deepseek-r1:1.5b 分析PDF 内容
  • UniappDay03
  • 高斯数据库触发器实现流水号的
  • 去中心化时代的通信革命:briefing与cpolar技术融合带来的安全范式革新
  • 【Linux系统】理解硬件 | 引入文件系统
  • 机器学习特征工程:特征选择及在医学影像领域的应用
  • 数字孪生映射探索驱动的具身导航!MorphoNavi:面向对象映射的空地机器人导航
  • 2D游戏背景滚动教程(JavaSwing)
  • 机器学习特征工程详解:特征选择与降维(PCA)
  • 数据赋能(336)——技术平台——智能化运营
  • 2.JVM跨平台原理(字节码机制)
  • Java研学-RabbitMQ(二)
  • C++中new和delete的多重面孔:operator new、new operator与placement new解析
  • 初识java
  • Python 程序设计讲义(20):选择结构程序设计——双分支结构的简化表示(三元运算符)
  • Model Control Protocol 三层架构设计,三种传输方式,完成MCP项目构建实现工具调试,多维度评价指标检测多工具多资源调用的鲁棒性和稳健性
  • java面试题(二)
  • 栈----1.有效的括号
  • 扒网站工具 HTTrack Website Copier
  • 3020雕刻机脱机自定义指令
  • 一些常见的网络攻击方式
  • 疯狂星期四第19天运营日记
  • Java并发编程第十篇(ThreadPoolExecutor线程池组件分析)
  • 锁相环技术简介(面向储能变流器应用)
  • 机器学习(一)KNN,K近邻算法(K-Nearest Neighbors)