自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

原创 求每个客户订单之前的累计订单金额

1.订单表数据如下:在此基础上增加一列,求每个客户订单之前的累计订单金额,实现效果如下:其中子查询部分详解窗口函数: 这个窗口函数用于计算的总和。 :指定了窗口的分区条件,即按照来分组。这意味着窗口函数将分别为每个客户的订单进行求和。 :指定了窗口内行的排序方式,即按照进行排序。这对于窗口帧(ROWS BETWEEN ...)的定义是必要的。 :定义了窗口帧的范围。这里表示从分区(即客户)的第一个订单开始,到当前订单之前的所有订单(包括当前订单的前一个订单,但不包括当前订单本身)

2024-09-24 11:26:15 293

原创 如果不用dense_rank() over() 如何实现分组排序

①使用自连接,只保留a 表的income小于等于b 表的income ,使得在后面按employeeid,a.income分组去重b.income,是累减的,即最小的a.income会对应所有的b.income,最大的a.income 只有一个b.income。1.在不用dense_rank() over() 的情况下实现,按EmployeeID分组,Income降序排序。3.最后以原表为主表,左连接t 表实现效果。2. 去重统计b.income 的数量。2. 不使用dense_rank()

2024-09-13 09:24:01 215

原创 查询出每个部门中,工资从高到低进行排名,工资部门排名在前 50%的员工

1.查询出每个部门中,工资从高到低进行排名,工资部门排名在前 50%的员工(比如部门有6个人,则前50%,则是前3名,如果部门人数为奇数,向下取整确定前 50%的人数),如果其入职天数早于部门平均入职天数,还要列出其入职天数。如果其入职时间晚于部门平均入职天数,则入职天数显示为空 要求查询的结果格式:部门名称,员工,工资,部门排名,入职天数。2. 筛选前50%的员工,且对入职天数做进一步处理。1.先利用窗口函数,求出基础数据列。

2024-09-09 20:58:10 297

原创 上级ID显示的是上级部门的ID , 该公司总共有三个层级,请用SQL查询出公司的组织架构情况

1.上级ID显示的是上级部门的ID , 该公司总共有三个层级,请用SQL查询出公司的组织架构情况,结果输出三个字段:一级部门名称、二级部门名称、三级部门名称。采用自连接,取出各层部门。

2024-09-09 20:45:20 207

原创 MySQL电影院连续座位需求

2.通过 `(rn - grp)` 来分组,从而识别连续的未预订座位。HAVING: 根据条件筛选出连续的未预订座位,`COUNT(*) >= 4` 确保找到至少4个连续的未预订座位。1.通过下移函数lag 和窗口函数 将未预订的位置,按seat排序分别下移 1 2 3格,还有rowid。1. 第一个 `ROW_NUMBER()` 计算每个座位在其 `ROWID` 下的序号。第二个 `ROW_NUMBER()` 按照状态分组,计算相同状态内座位的序号。2.判断两两之间是否连续,作为字段is_type。

2024-08-28 17:30:29 259

原创 需要视频号搞笑类型视频的曝光点赞时长等数据

用户行为表:t_user_video_action_d。视频表:t_video_d。

2024-08-09 14:26:28 276

原创 如下为平台商品促销数据:字段为品牌,打折开始日期,打折结束日期

第二次活动时间为 2021-06-09 到 2021-06-21 其中 9 号到 15 号为重复天数,只统计一次,即 vivo 总打折天数为 2021-06-05 到 2021-06-21 共计 17 天。计算每个品牌总的打折销售天数,注意其中的交叉日期,比如 vivo 品牌,第一次活动时间为 2021-06-05 到 2021-06-15,2.若max_end_date>start_date,则说明存在区间交叉,应将start_date改为max_end_date+1。4.计算最终结果,求和day_c。

2024-07-16 17:24:46 548 1

原创 12.20~12.21两日应用商店未更新下载量数据

4.将开始时间和结束时间用rk 进行关联,一个start 对应一个end ,并且取出end 日期对应的new_installs,用datediff 函数计算开始日期和结束日期之间相差的天数+1,再用new_installs/天数,求出平均值。2. 对new_installs和prev_new_installs 关系进行判断 ,取出未更新下载量的开始日期和结束日期,做为字段gap_type。5.最后关联回源表,对new_installs 做判断 生成调整后的new_installs_adj。

2024-07-16 09:59:25 786

原创 用户当天互相认识且互发消息后、且接下来每天都聊天活跃(聊天两次以上)的用户数量多少?(sql server)

②:在①的基础上增加两个字段,rk字段以user1 user2 为分组 login_data 降序排序,为了求每两个互用第一天发消息时的排序,is_hf字段以user1 user2 login_data 三个字段分组 统计userid 的数量 用来判断每两个用户每天是否有互发,此字段需要大于2才是符合要求的。⑥:在⑤的基础上,限制is_max_rk=is_date_rk+1 即1一月中符合聊天的天数要等于 月底距离第一天聊天的天数+1 ,且统计出最后符合的用户数。

2024-06-18 17:39:12 277

原创 MySQL 统计上周上上周金额

返回值: 返回一个整数,表示指定日期的年份和周数的组合。返回的格式为YYYYWW,其中YYYY是四位数的年份,WW是两位数的周数。语法: DATE_SUB(date, INTERVAL expression unit)返回值: 返回一个新的日期或日期时间值,该值是在指定的日期上减去指定的时间间隔后得到的。以上示例中,DATE_SUB函数分别将指定的日期减去了1年、1个月,1周和7天。语法: YEARWEEK(date, [mode])

2024-05-21 14:47:39 457

原创 SQL统计次月留存率

解读以上结果:2020年1月入职,2020年1月离职的 人数是4个,2020年1月入职,2020年2月离职的人数(cnt),2020年1月入职到2020年2月离职的人数是3+4=7(ljzrs),,并把一列作为入职月份,另外一列作为离职月份,离职月份必须大于等于入职月份,并且剃掉入职月份为'9999-01' 的数据。,rzmonth(入职月份),lzmonth(离职月份),cnt(人数),且将离职月份为空的数据转换为‘9999-01’,确保每一个离职月份都有数据,且将没有离职月份数据的人数由空值转为0。

2024-05-16 12:21:55 849

原创 MySQL中的计算列(Generated Column列)-如何让数据库中某个字段随时间自动更新

一、计算列MySQL 的 Generated Column 又称为虚拟列或计算列。Generated Column列的值是在列定义时包含了一个计算表达式计算得到的。1、定义Generated column列的语法如下:列名 类型(1)AS(expr)用于生成计算列值的表达式;(2)VIRTUAL或STORED关键字表示是否存储计算列的值:(3)VIRTUAL:列值不存储,虚拟列不占用存储空间,默认设置为VIRTUAL;(4)STORED:在添加或更新行时计算并存储列值。

2024-04-23 16:04:28 1767

原创 每天的近一周总点赞量和一周内最大单天转发量(SQL开窗 rows n preceding 最近n行的数据)

短视频信息表tb_video_info。

2024-04-23 12:05:13 178

原创 MYSQL查询某个用户所在部门的所有上级部门

结果解释:员工ID为‘02e60b94-618f-49a1-8341-e80ab3a2b908’ 部门编码为 ‘a8fc6b71-ff7d-43e1-bb1b-a570d25ed15d‘ 名称为测试1 部门,测试1部门的上级部门为测试部门,测试部门的上级部门为 军人心理健康管理系统。1.sys_dept(部门表),主要用到字段为id(部门编码),name(部门名称),parent_id(上级部门)2.sys_user(用户表),主要用到字段为id(员工ID),dept_id(部门编码)

2024-04-22 17:11:06 1582 1

原创 SQL 相对位置的开窗函数PERCENT_RANK()和CUME_DIST()

1.PERCENT_RANK()函数计算一组行中行的相对排名。从0开始,以tag 分组,时间升序,计算时间的相对排名2.CUME_DIST() 函数计算结果集的分区中值的相对位置 (非0开始,而是看当前行数占所有行数的百分比)

2023-08-28 11:39:32 468 1

原创 oracle存储过程笔试题

oracle存储过程计算预估值

2023-07-07 18:27:44 689 1

原创 SQL统计次月复购率

【代码】SQL统计次月复购率。

2023-07-06 17:28:47 803 1

原创 oracle创建用户并赋予权限

【代码】oracle创建用户并赋予权限。

2023-07-06 17:14:36 694 1

原创 mysql中left join条件在on与where时的区别

与②对比,把where改为and,明明a.id>1,但仍有a.id=1的记录,且a.id=1的关联数据对不上。由于这里添加a表的过滤条件,但主表仍然是a表,所以a表的记录必定要出现在结果集中,只是不会再去b表寻找匹配的结果,而直接用null填充。查询过程与④一样,先在a中拿到一条记录,然后去b中从头到尾寻找符合a.id=a_id and a_id>2的记录,只要找到则拿出来并继续往下寻找,如果找完b表都没数据,那么右侧填充null,a表第一条记录寻找结束。根据⑤的分析,处理过程一样,只是多了一个or。

2023-07-06 17:07:14 1660 1

原创 日期与字符串之间的转换

日期与字符串之间的转换

2022-09-07 18:06:44 8748 1

原创 利用逗号拆分行,逗号拼接行

mysql 利用逗号拆分行,逗号拼接行

2022-09-05 17:58:26 2685

原创 关于邮箱的正则表达式

关于邮箱规范的正则表达式

2022-09-01 08:29:07 45080 2

原创 SQL求出最大连续登陆天数

SQL 连续登陆问题

2022-08-31 17:58:07 2760

原创 oracle之sys_connect_by_path函数

1. sys_connect_by_path 详解 ------------oracle9i 开始有的自带函数(用于解决团队关系等)语法:Oracle函数:sys_connect_by_path 主要用于树查询(层次查询) 以及 多列转行。其语法一般为: select ... sys_connect_by_path(column_name,'connect_symbol') from table start with ... connect by ... prior理...

2022-02-14 11:04:04 6714

原创 MYSQL 取某特定行数据及求中位数位置及数值

取某特定行数据以下的两种方式均表示取2,3,4三条数据。1.select* from test LIMIT 1,3;当limit后面跟两个参数的时候,第一个数表示要跳过的数量,后一位表示要取的数量。2.select * from test LIMIT 3 OFFSET 1;(在mysql 5以后支持这种写法)当 limit和offset组合使用的时候,limit后面只能有一个参数,表示要取的的数量,offset表示要跳过的数量 。...

2022-02-11 14:42:55 860

原创 Kettle 连接Oracle、mysql数据库报错

连接Oracle报错 如果本地已经安装Oracle客户端,则需要在oracle客户端目录下复制对应的jar包。例如:D:\app\root\product\11.1.0\db_3\jdbc\lib 需要复制路径内所有ojdbc开头的文件,例如ojdbc5、ojdbc6.jar等 将复制好的ojdbc文件粘贴到Spoon目录下,例如:D:\Program Files (x86)\data-integration\lib路径下即可。 重新启动Spoon(kettle)后..

2021-11-17 14:38:06 1107 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除