LeetCode刷题---每月交易I



LeetCode官方题解

解题思想:

首先按照日期和国家/地区进行分组

对分组后的结果求解,使用IF函数进行过滤

涉及函数

1.在对日期截取时,使用了MySQL中的DATE_FORMAT函数,将日期转换为指定格式的日期

复制代码
//2024-03-11,截取为 2024-03-11
DATE_FORMAT('2024-03-11','%Y-%m')
//20240311,截取结果为202403
DATE_FORMAT('20240311','%Y%m')

2.该题配合MySQL中的IF 函数进行过滤,IF 函数中包含了一个三元表达式,当state不等于approved时,将state赋值为NULL或0。

复制代码
//求取分组后的批准总数
COUNT(IF(state = 'approved', 1, NULL)) AS approved_count
//求取分组后的金额总数
SUM(IF(state = 'approved', amount, 0)) AS approved_total_amount

完整SQL代码:

复制代码
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
相关推荐
lll23526917795 小时前
HR如何快速整理面试沟通内容?
面试·职场和发展
零售校长5 小时前
西湖区零售门店店长面试怎么准备
面试·职场和发展·零售
袋鼠云数栈7 小时前
让 SQL 解析不再重复造轮子:SqlParserX 正式开源
数据库·人工智能·sql·开源·数据治理
java_nnnn7 小时前
LeetCode刷题滑动窗口(水果成篮+找到字符串中所有字母的异位词)Java
java·开发语言·leetcode
程序员老赵7 小时前
Docker 部署 Hue:轻松搭建数据库与数据仓库 SQL 查询平台
sql·docker·开源
梦影_9 小时前
MySQL进阶教程(一)—— 储存过程与触发器(上)
开发语言·数据库·后端·sql·mysql·中间件
文丑颜不良啊10 小时前
LeetCode276~300题目解析
java·leetcode
wuyk55510 小时前
《WiFi 嵌入式物联网开发全套实战》 | 第 45 章【终章】WiFi 开发全套知识复盘 + 面试高频题 + 进阶路线
物联网·面试·职场和发展
花间相见12 小时前
【计算基础|MySQL11】事务与隔离级别
sql·mysql·adb·架构
傅科摆 _ py12 小时前
链表力扣复习
数据结构·leetcode·链表