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
相关推荐
蛋蛋的就会顺顺的2 小时前
hot100 p0——栈,贪心算法,动态规划
java·前端·javascript·算法·leetcode·力扣
余槐i2 小时前
PostgreSQL 函数索引报错 must be immutable:3种绕法与代价
数据库·后端·sql·postgresql·性能优化
小 黄 鸡3 小时前
HashMap 面试必会知识点详解(JDK 8)
java·面试·职场和发展
Navigator_Z4 小时前
LeetCode //C - 1291. Sequential Digits
c语言·算法·leetcode
无敌贵点大王8 小时前
嵌入式软件面试经(自用)
c语言·stm32·单片机·学习·mongodb·面试·职场和发展
程序 代码狂人8 小时前
数据开发面试【问答完整版|带深挖追问 + 扩展回答】
面试·职场和发展
0+1119 小时前
算法 --栈
算法·leetcode
圣保罗的大教堂9 小时前
leetcode 3723. 数位平方和的最大值 中等
leetcode
数据工匠老o9 小时前
一张 5 亿行的表按月分区后,清理历史数据从几小时变成了几秒
数据库·sql
hwscom9 小时前
几分钟开防护,SQL和XSS注入全被护卫神挡住
数据库·sql·xss