- 博客(28)
- 收藏
- 关注
原创 SQL 条件等价变换
转化成SQL的话是 not (mark_day!=0 or close_sts in (‘P’,’Q’)),直男看不得这些弯弯绕绕。筛选非销户卡,业务给出的逻辑是:!(mark_day!如果条件更加复杂,但是你会画卡诺图或者是个暴力计算小能手,也可以用离散数学里的式子简化。德摩根定律:not( A or B)=not A and not B。可以发现result1和result2结果都是一样的。只取’P’ 和’R’,mark_day取0和1。
2025-04-09 21:13:46
89
原创 VR开机问题
当年在电子厂干活,遇到了一只新组装的VR(Android机,不是一组镜片放个手机那种),刚开机亮一下屏幕就关机了,也没有低电量提示。后来充电开机后电量掉的飞快。测试老司机很懵逼,我分析了说是电池老化导致的,换只电池就好了。后面换了电池果然通过了Burnin测试。考考读者们为啥刚开机亮一下屏幕就关机了,也没有低电量提示能判断为电池老化导致的(新品)。
2024-12-10 23:00:50
124
原创 机器视觉检查屏幕缺陷遇到的问题
之前做测试数据处理的时候,发现产线上有一只产品是波纹屏,就是屏幕上有像水波一样的纹路(可能是电容松了),开发百思不得其解。通过对神经网络的粗浅认识,我给开发说了原因,开发最后用了一张纯白图片便可检测出该类缺陷。考考读者们是怎么回事(倒反天罡,嘻嘻)
2024-12-10 22:52:56
128
原创 Android的文件机制
MxPlayer(一款视频播放器)里面移动手机视频到sd卡,授权过后,SD卡的视频不能播放,文件管理器里面移动后的视频大小为0B,源文件夹里已经看不到移动的视频文件了,请问该怎么恢复?看到mxplayer上显示了视频时长,但是不能播放,缩略图是黑的。遂决定把这些0B文件移动回源文件夹,果然视频又能播放了。系统:Android 8.1.0。手机:360Nlite。
2024-12-10 22:46:47
181
原创 烤鸡鸡烤题
由(连续)英文字符加(连续)数字构成一个子串,多个子串以逗号分隔,一个长字符串由字符‘@’分隔为两部分,前、后面是N个子串以逗号分隔。现有一种运算,该长字符串前后两部分英文部分相同的子串数字相减,然后按前面部分顺序输出,如果为0则不输出,最后面+‘@’。切割前后两部分字符串为单独的“组”,前面英文,后面数字。输入:‘a1,b2,c3@a1,c1’匹配,英文字符相同的,数字相减。运算结果:‘b2,c3@’这里升个级,没有逗号分隔了。如果没有找到相同的,不处理。切割字符串为前后两部分。闲来无事,刷刷题玩。
2024-09-23 20:59:00
226
原创 流程质量控制工具--点检清单本儿
通过下拉菜单选中要点检的步骤。作为打工人,如果改变不了流程,自动化不了固定的过程,还可以通过点检每个工序的关键作业要求来控制最终的产品质量。如果需要新增、删除,修改点检内容修改配套csv文件即可,Title列是点检步骤名称,Content列是点检条目。1.一些企业单项工作流程非常长,每一步都有很多注意事项,如果遗忘了其中一些步骤,可能引起整个流程的混乱,造成严重的时间浪费。配套csv,自行创建一个名为点检清单本儿.csv的文件,用Excel软件打开,添加Title列和Content列即可。
2024-09-20 23:37:38
431
原创 Hive 列转行
思路,一行有多科成绩,扫描十二次表插入十二次划不来。百度了一种方法,explode函数将行转化为列,先将姓名,科目,分数,排名用“:”连接起来,然后将列转为行,然后拆分。现在需要把12期数据拆成12行,不为空则保留,为空则舍去。表格处理要求可理解为,有一张表,记录了学生的姓名,科目成绩与排名,现在需要把。在Oracle里,数据量比较少,换计划一个借据一期一条记录,在Hive里,将12期的还款记录放到了一行上,可能是为了减少记录数。即可得到转化后的函数。现学现用,可能不是最简单的方法,欢迎讨论。
2024-08-17 22:42:44
204
原创 SQL玩出花--多个SQL查询合并为一个
之前有讲过使用decode来做表查询的合并。表连接部分相同的时候,既可以使用union all将多个表拼接起来,也可以使用decode选择性地连接相应的记录。没有实例属实有点抽象。还是有请Oracle老演员emp表出厂,见下方。字段2:A对应的是部门10,job为PRESIDENT员工姓名。B对应部门20,job为MANAGER的员工姓名,C对应部门30,job为‘CLERK’的员工姓名。表部分相同,但是条件不同,可以考虑表连接里面做判断。字段1:码值为ABC。
2024-07-23 20:35:33
1134
原创 SQL玩出花--count
Avg(列名)在列的值中有null不参加统计,影响平均值准确性,可以使用avg(nvl(列,0))与 sum(列)/count(1)代替。总结:count(2)和count(1)一样,是一个常量表达式,常量表达式是符合的记录有多少行,常量记录就有多少行.执行效率count(1)>≈count(*)>count(主键id)>count(列名)可见执行结果:count(0)=count(2)=count(*)=count(1)想必大家都见过,count(*),count(1),count(字段)
2024-07-21 23:11:35
330
原创 银行面试题--短信营销降本增效
如果这个时候,我们不用交点数据,反而采用采样的方式,如果是做数据的,他依然会“回归”出一条直线,然后告诉你,有波动,是误差【手动滑稽++】同时字数是不也更少?以自身为例,收到短信第一反应,是不是骗子(信任问题),第二反应我要那么大的额度干啥(需求问题),第三反应,我贷款了,利润是否能支付我的贷款并给我剩下足够的余额(经济问题)?,如果误差可控,那么你可以说你的模型是正确的。当然了,贷款客户的需求维度不止这些,但只有在对方信任你,需求精准匹配的情况下,你发出的短信才有意义,这个时候你再谈短信转化率才有意义。
2024-07-20 12:19:30
392
原创 银行面试题--累计求和的实现
select t.*,(select sum(sc) from t t1 where t1.userid=t.userid and t1.pt
2024-07-19 23:18:47
351
原创 SQL执行顺序理解
1.先确认表(数据源头),如果有join,先根据连接条件,把多张表的记录(行)连接起来,形成一张大表。4.如果分组后还要过滤,用having再过滤一遍,最后会得到分组后的数据。5.执行顺序调到开头,根据字段列表和表达式,选择显示哪些内容。2.表连接好了之后根据where条件筛选掉不符合条件的行。3.然后根据group by的分组字段,对数据进行分组。6.确定了显示内容,根据order by进行排序。把自己想象成计算机,SQL需要怎么处理。
2024-07-08 21:01:27
188
原创 银行数据迁移遇到的数据问题
A系统的数据迁移到B系统时,B系统的检核人员按照B系统的规则检核数据,但是当时缺乏沟通,A系统按A系统的运行机制写SQL,B按B的检核,中间少了机制的转化,会出问题。4.运行机制不一样,揉一起比较乱,有些从0期开始,有些从第1期开始,当然系统迁移时需要统一转化为相同的规范,还好这个不痛不痒。5.数据不符合逻辑,比如贷款的起始期次应该小于到期期次。1.数据非空:同样的字段,有些系统可为空,有些不能,合并的时候数据没有补上,2.数据丢失:一般是无关痛痒的数据,造成有些表有数据,有些没有。
2024-06-30 21:32:47
327
原创 银行数据迁移Debug经验总结
2.先观察数据特点,横向比较(记录内的特点)纵向比较(记录之间相似之处)。然后分类,找出现比较频繁的,抽查为什么,打上补丁后再次执行,数据一般会比之前少,再做抽查。3.把相关字段的计算式提取出来,做成子查询,放到检核SQL的字段列表(select-list)里面去,看看是否数据匹配,不匹配可能是逻辑有问题,匹配大概率数据就那样。1.分析原SQL的逻辑是否大体正确,如果逻辑正确,可能是有细节没考虑到,或者是数据本来不合规。数据质量比较差,检核SQL一执行,动则几万条数据需要分析,让人感觉无从下手。
2024-06-30 21:22:56
205
原创 SQL常用的几个计算一
银行里面需要根据当前日期(字符串格式)计算上/下一个结息日,如果今天是2024/6/30,那么上一个结息日是2024/6/21,下一个结息日是2024/7/21,如果当天是21号,下一个结息日取当天。思路,判断当前是大于,还是小于21号,目标字段和当前日期年月相同的把年月截取了,再链接一个'21',不同的转化成日期类型,做加减,再转化为字符串,截取,拼接。算法一:直接分析第7位是不是0,用这个数减去这个数截取小数点后6位,如果大于10的负7次方则不为0,否则为0。同事需要把“X天X小时X分”转化成秒。
2024-06-30 21:14:25
468
原创 定时喝水提醒
用python写了一个小脚本,提醒广大电脑前久坐上班族每隔一段时间喝水,起来走走(上厕所)样式如下。西医说久坐容易导致心肌衰弱,引发高血压,冠状动脉硬化,ED....搞不好肺栓塞就GG了。弹窗(内容自定义):#可以使用提示音,见注释部分。几百块钱卖啥命啊,健康最重要~
2024-05-06 22:03:47
332
原创 SQL_使用decode合并SQL
更进一步的,如果有几个SQL,表连接的表还是那几张表,连接方式还是那样,但是连接条件不一样,我们是否能用decode函数合并呢.答案是可以的.我们可以使用decode来实现有选择的做表连接.再字段映射里面同样使用decode函数执行对应的字段表达式.这样就实现了多个SQL合并为一个SQL.看到同事最不加思索的写法就是where选择位数等于18位的然后截取,另外一个SQL是用where选择位数等于19位的,然后union all....写完后发现,居然还有17位的,哈哈哈。
2024-05-06 20:37:01
484
原创 SQL连续登录判断算法二
select * from t t1 where exists(select 1 from t t2 where t1.userid=t2.userid and t2.td
2024-04-07 21:48:58
335
1
原创 SQL连续登录判断算法一
select userid,count(td-rownum) from (select distinct USERID,trunc(LOGIN_DATE) td from login_info group by USERID,trunc(LOGIN_DATE) order by trunc(LOGIN_DATE)) group by userid,td-rownum having count(td-rownum)>=5 /*如果没有符合连续登录5天的数据,userid为空*/5.过滤分组统计的数据。
2024-04-05 09:20:31
310
1
原创 SQL拆分数据
举例来说,贷款核算表Test1里面一条记录有四个个金额,PRI_AMT,INT_AMT,ODP_AMT,ODI_AMT.新增一个字段,如果是ODP_AMT>0显示'ODP',如果是ODI_AMT>0显示'ODI'.如果两个都大于0,显示两条数据。当PRI_AMT=0的时候,新增字段为'INT',不等于零的时候拆分为两条数据,'PRI'和'ODI'.有条件引用笛卡尔积的数据.有时候会遇到同样的表连接,不同的连接条件,可以使用表拼接,也可以在表连接的时候使用复杂条件筛选数据.把两种情况分别算出来,表合并。
2024-03-03 13:43:47
279
原创 Python自制CV剪贴板
按下win键,开始菜单中找到一个非uwp软件的图标,点击打开文件位置就是。图标可以用greenfish生成。可以创建快捷方式(Windows),将快捷方式复制到开始菜单目录下即可在开始菜单中启动该程序。用Python随手写了一个CV剪贴板,提升常用语句的复制粘贴效率、#云桌面的win10不能调出剪贴板,对于CV工程师来说十分不方便。#原创文章,转载注明出处。1.创建存储数据的文件。
2024-02-17 21:35:48
681
4
原创 Impala踩到的一些坑
1.Impala不支持select-list(字段子查询,select到from中间)的子查询,需要转化成表连接。左连接原来子查询的表,表连接的条件使用子查询的筛选条件就好。4.DBeaver里面Oracle的SQL行尾可以直接加注释,Impala需要空格后加注释,貌似是impala中注释吃掉了换行符,导致解析错误。3.Impala类型检查比较严格,貌似不支持Oracle的隐式转换,字符串的数字和数字类型的数字有区别。解决方法:使用表拼接来代替。比如同样的表,子查询要28秒,表连接只要21秒,提升25%。
2024-02-17 20:47:04
520
1
原创 SQL连续登录等连续判断问题解题思路
特征1:一个连续队列(公差d1)和另外一个连续队列(公差d2)做差(向量运算),当d1=d2的时候,有差值为一个常量,然后统计常量的个数.算法1:去重之后的登录时间减去公差为1的队列(123456...),得到一系列时间(Oracle),统计相同的时间个数,看有没有大于n的.算法3:按照id排序过后,行偏移错位相减,统计一个固定间隔内(like算法2)相减结果(间距)个数是否为n-1。算法2:去重的数据,以当前时间为"计算节点",计算当前时间到其后n天有多少条数据。当然啦,穷举大法也挺不错的,[手动滑稽]
2024-01-09 22:17:31
549
原创 用全排列理解递归
二叉树的遍历顺序的不同,因为Action相对调用函数自身语句的位置不同,决定了是先读节点再往下层读取,还是先转到叶子,然后执行完后返回上层继续执行。c.remove(i)#如果用data代替C,返回执行别的分支的时候,向下一层传递的数组会丢失之前删除的数据,不符合逻辑。有一个数组M,里面有M(M
2023-09-25 17:06:18
58
1
原创 华为机考二星题
全排列应用在“组合”场景下会有重复的情况,所以策略改进为,有一个数组,取出N个数,第K次取数的索引大于第K-1次取数的索引。则可以避免重复的情况#论证:全排列中重复的情况按照数值大小排序必定能转化为该策略下的序列,该策略不会引起重复,所以能去重。递归第一层,有四个分支(四个数),递归第二层有三个分支(剩余三个数),递归第三层有两个分支,在最后一层输出最末一层的分支上经过了哪些路径并输出#详见递归求全排列。有N个旅行团,只有一辆大巴,核载人数M。#强化理解:集合中有4个元素,求全排列。
2023-09-25 16:30:58
89
1
原创 有趣的SQL笔试题
注:3学年制为2018~2019,2019~2020,2020~2021年在校.--汇总人数,计算范围:距离目前时间范围在学年制范围内,并且是之前的。算法:子查询,传递当前年份,统计之前至今有多少人入学。已知每年入学人数和学年制,从2018年开始招生。题目:请计算每年学校有多少人。--关联子查询类比于函数传参。创建表#注释字段含义。
2023-08-03 17:57:40
71
原创 度小满SQL笔试题
max_sum --算法一:向子句传入course_id,时间节点,计算最大值。某页面推出了数据分析系列直播课程介绍。用户可以选择报名任意一场或多场直播课。insert into endtime--吃饱了撑的把登出时间节点提出来。解法2:笛卡尔积,依旧是以登出节点为准--本质上都是for循环。解法1:向子查询传递参数,***以登出时间为计算节点***
2023-08-03 16:57:45
382
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人