【MySQL】计算日期是当前月份的第几周

news2024/12/24 8:55:59

力扣题

1、题目地址

2993. 发生在周五的交易 I

2、模拟表

表:Purchases

Column NameType
user_idint
purchase_datedate
amount_spendint
  • (user_id, purchase_date, amount_spend) 是该表的主键(具有唯一值的列)。
  • purchase_date 的范围从 2023 年 11 月 1 日到 2023 年 11 月 30 日,并包括这两个日期。
  • 每一行包含 user id,purchase date 和 amount spend。

3、要求

编写一个解决方案,计算用户在 2023 年 11 月 的 每个星期五 的 总花费。
输出所有在 周五 有购买记录的周。

按照每月的周次序 升序 排列结果表。

结果格式如下示例所示。

示例 1:

输入:
Purchases 表:

user_idpurchase_dateamount_spend
112023-11-071126
152023-11-307473
172023-11-142414
122023-11-249692
82023-11-035117
12023-11-165241
102023-11-128266
132023-11-2412000

输出:

week_of_monthpurchase_datetotal_amount
12023-11-035117
42023-11-2421692

解释:

  • 在 2023 年 11 月的第一周,于 2023-11-03 星期五发生了总额为 $5,117 的交易。
  • 对于 2023 年 11 月的第二周,于 2023-11-10 星期五没有交易。
  • 同样,在 2023 年 11 月的第三周,于 2023-11-17 星期五没有交易。
  • 在 2023 年 11 月的第四周,于 2023-11-24 星期五发生了两笔交易,分别为 $12,000 和 $9,692,总计为 $21,692。
  • 输出表按照 week_of_month 升序排列。

4、代码编写

我的写法

SELECT CEILING((DAY(purchase_date)+WEEKDAY(purchase_date-INTERVAL DAY(purchase_date)-1 DAY)) / 7) AS week_of_month, 
       purchase_date, 
       SUM(amount_spend) AS total_amount
FROM Purchases
WHERE WEEKDAY(purchase_date) = 4
AND YEAR(purchase_date) = '2023'
AND MONTH(purchase_date) = '11'
GROUP BY week_of_month
ORDER BY week_of_month

代码分析

例子:purchase_date = ‘2023-11-03’

1、本月第几天,结果为 3

SELECT DAY(purchase_date);

2、本月第一天日期,结果为 2023-11-01

SELECT purchase_date - INTERVAL DAY(purchase_date)-1 DAY;

3、本月第一天是周几,结果为 2(周三),会发现 WEEKDAY(月份第一天) 的结果值刚好是补齐日期矩阵需要的天数
日期矩阵

SELECT WEEKDAY(purchase_date - INTERVAL DAY(purchase_date)-1 DAY);

4、当前天数加上补齐日期矩阵需要的上月占用的天数(相当于是第一周补全),结果为 5

34567
891011121314
15161718192021
22232425262728
29303132
SELECT DAY(purchase_date) + WEEKDAY(purchase_date - INTERVAL DAY(purchase_date)-1 DAY);

5、从上面图很清晰可以看出可以用7的倍数去区分哪一周,第一周除以每周的天数 7,并向上取整,最终结果为 1

SELECT CEIL((DAY(purchase_date) + WEEKDAY(purchase_date - INTERVAL DAY(purchase_date)-1 DAY)) / 7);

网友代码(WEEK函数mode参数选择,比较合理)

思路:计算日期(2023-11-03)周数减去当前日期第一天(2023-11-01)周数加一,就可以算出日期是当月第几周

SELECT WEEK(purchase_date, 1) - WEEK('2023-11-01', 1) + 1 AS week_of_month,
	   purchase_date,
       SUM(amount_spend) AS total_amount
FROM Purchases
WHERE WEEKDAY(purchase_date) = 4
GROUP BY purchase_date
GROUP BY purchase_date

WEEK函数接受两个参数:

  • date是要获取周数的日期。
  • mode是一个可选参数,用于确定周数计算的逻辑。
    它允许您指定本周是从星期一还是星期日开始,返回周数应在 0 到 52 之间或 0 到 53 之间。
    mode参数在一些网站上写的很多都细节不够,不容易理解,可以看下面参考里面的

参考

MySQL 计算当前日期属于本月第几周
MySQL week() 函数及参数 mode 详解

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1404938.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

对称图做法,全程动图演示

最终效果: 实现步骤: 其他图形画法: 点线对比图做法,全程动图演示 气泡图做法,全程动图演示 重叠柱状图做法,全程动图演示 瀑布图做法,全程动图演示 对称图做法,全程动图演示

轻松上手:通过阿里云PAI QuickStart微调部署Qwen-72B-Chat模型

作者:熊兮、求伯、一耘 引言 通义千问-72B(Qwen-72B)是阿里云研发的通义千问大模型系列的720亿参数规模模型。Qwen-72B的预训练数据类型多样、覆盖广泛,包括大量网络文本、专业书籍、代码等。Qwen-72B-Chat是在Qwen-72B的基础上…

第一篇【传奇开心果系列】beeware的toga开发移动应用:轮盘抽奖移动应用

系列博文目录 beeware的toga开发移动应用示例系列博文目录一、项目目标二、开发传奇开心果轮盘抽奖安卓应用编程思路三、传奇开心果轮盘抽奖安卓应用示例代码四、补充抽奖逻辑实现五、开发传奇开心果轮盘抽奖苹果手机应用编程思路六、开发传奇开心果轮盘抽奖苹果手机应用示例代…

kafka集群和Filebeat+Kafka+ELK

一、Kafka 概述 1.1 为什么需要消息队列(MQ) 主要原因是由于在高并发环境下,同步请求来不及处理,请求往往会发生阻塞。比如大量的请求并发访问数据库,导致行锁表锁,最后请求线程会堆积过多,从…

专业ScrumMaster(高级)- PSM II 认证班,Scrum.org认证PSM II官方认证班

课程简介 Scrum是目前运用最为广泛的敏捷开发方法,是一个轻量级的项目管理和产品研发管理框架,旨在最短时间内交付最大价值。根据2022年全球敏捷状态报告,Scrum的应用占比已经达到87%。 Scrum.org 由 Scrum 的联合创始人 Ken Schwaber 创立…

[亲测有效]CentOS7下安装mysql5.7

前言 近期项目需要搭配mysql一起存储相关数据,但对mysql的版本有要求,于是在服务器搭建了mysql5.7,顺便记录一下搭建步骤和踩坑解决步骤。 目录 前言 一、清除旧安装包 二、安装YUM 三、使用yum命令即可完成安装 四、重新设置密码 五、…

C#winform上位机开发学习笔记5-串口助手的定时发送功能添加

1.功能描述 选择自动发送功能后,按照设定的发送时间发送发送框中的信息数据,设定时间可以手动输入,当手动输入信息无效(非数字)时,系统弹出错误提示,并将其设置为默认定时时间。 2.代码部分 步…

【Gene Expression Prediction】Part3 Deep Learning in Gene Expression Analysis

文章目录 6 第二个讲座:Deep Learning in Gene Expression Analysis6.1 Introduction6.2 D-GEX6.2.1 Connectivity map project6.2.2 Predicting gene expression from landmark genes 6.3 Deep generative models for genomics6.3.1 Manifold hypothesis6.3.2 Auto…

【C++】Qt:QCustomPlot图表绘制库配置与示例

😏★,:.☆( ̄▽ ̄)/$:.★ 😏 这篇文章主要介绍QCustomPlot图表绘制库配置与示例。 学其所用,用其所学。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下,下次…

2024/1/17 DFS BFS + Div 3 a,b

目录 Lake Counting S 求细胞数量 海战 组合的输出 div3 A. Square div3 B. Arranging Cats Lake Counting S P1596 [USACO10OCT] Lake Counting S - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 感谢大佬的指点!!!! 思…

k8s使用ingress实现应用的灰度发布升级

v1是1.14.0版本nginx ,实操时候升级到v2是1.20.0版本nginx,来测试灰度发布实现过程 一、方案:使用ingress实现应用的灰度发布 1、服务端:正常版本v1,灰度升级版本v2 2、客户端:带有请求头versionv2标识的请求访问版…

老套的购物车效果

一、项目文件结构 二、各个文件内容 index.html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name"viewport…

【C语言进阶】预处理详解

引言 对预处理的相关知识进行详细的介绍 ✨ 猪巴戒&#xff1a;个人主页✨ 所属专栏&#xff1a;《C语言进阶》 &#x1f388;跟着猪巴戒&#xff0c;一起学习C语言&#x1f388; 目录 引言 预定义符号 #define定义常量 #define定义宏 带有副作用的宏参数 宏替换的规则 …

算法基础学习|双指针算法

双指针算法 代码模板 for (int i 0, j 0; i < n; i ){while (j < i && check(i, j)) j ;// 具体问题的逻辑 } 常见问题分类&#xff1a;(1) 对于一个序列&#xff0c;用两个指针维护一段区间(2) 对于两个序列&#xff0c;维护某种次序&#xff0c;比如归并…

echarts绘制饼图,部分数据隐藏指示线和文本,hover时隐藏指示线和文本的类别也不显示tooltip提示

option {tooltip: {trigger: item,formatter: (p) > {if (p.name) {return ${p.name}&#xff1a;${p.value}个;}},backgroundColor: #ffffff,textStyle: { color: #666666 } // 提示标签字体颜色},legend: {top: 5%,left: center},series: [{name: Access From,type: pie,…

第三方控价服务商怎么选

用对了方法&#xff0c;事半功倍&#xff0c;品牌控价也是如此&#xff0c;品牌方在治理工作中&#xff0c;如果选择自建团队进行处理&#xff0c;需要包含对数据技术的抓取团队&#xff0c;还要有对治理规则熟悉的操作团队&#xff0c;涉及人员和系统&#xff0c;费用成本相应…

TA百人计划学习笔记 3.1.1模板测试

资料 源视频 【技术美术百人计划】图形 3.1 深度与模板测试 传送门效果示例_哔哩哔哩_bilibili ppt 3100-模板测试与深度测试(1) 参考 Unity Shader: 理解Stencil buffer并将它用于一些实战案例&#xff08;描边&#xff0c;多边形填充&#xff0c;反射区域限定&#xff0c;阴影…

EXECL 单元格字符串链接 CONCAT :应用:将一行数据转为json

源&#xff1a; 目标 函数表示 CONCAT("data", CHAR(10), "{", CHAR(10), " ", "ulAlarmId : ", A5, CHAR(10), " ", "ulAlarmLevel : ", D5, CHAR(10)," ", "bBo…

远程桌面--虚拟机与主机的文件传输

注意&#xff1a; 确保VMware开头的服务全部在运行进入虚拟机打开文件管理器点击计算机右键选择属性在选择远程管理选择允许 1.winR 输入mstsc 2.输入虚拟机的ip地址 2.输入虚拟机的密码 上面的Administrator是虚拟机的用户名&#xff0c;有时会需要我们手动输入 3.验证…

【华为 ICT HCIA eNSP 习题汇总】——题目集7

1、一台 PC 的 MAC 地址是 5489-98FB-65D8 &#xff0c;管理员希望该 PC 从 DHCP 服务器获得指定的 IP 地址为192.168.1.11/24&#xff0c;以下命令配置正确的是&#xff08;&#xff09;。 A、dhcp static-bind ip-address 192.168.1.11 24 mac- address 5489-98FB-65D8 B、dh…