离职同事跑到广东找工作,广东那边的面试官直接致电咨询我供职公司的熟人,询问此人的“工作能力”,这位熟人又把原委告诉了我。
这种通过熟人对前离职同事的调查,本人至少经历过三次了,世界真是太小了,特别是在大一点的公司,不管去哪里工作,你在上一家公司的工作态度、能力和人际关系,很容易影响到你的下一份工作,比预想的容易的多。
离职同事跑到广东找工作,广东那边的面试官直接致电咨询我供职公司的熟人,询问此人的“工作能力”,这位熟人又把原委告诉了我。
这种通过熟人对前离职同事的调查,本人至少经历过三次了,世界真是太小了,特别是在大一点的公司,不管去哪里工作,你在上一家公司的工作态度、能力和人际关系,很容易影响到你的下一份工作,比预想的容易的多。
最近需要统计一项数据,原数据包含记录行生成的时间戳字段 OP_TIME 和一个自增序列中间可能不连续的单据编号 SWF_NUM,要求统计相邻两条记录的时间戳间隔不超过 10 分钟的最大连续记录数。概括起来有两个要求:
整体思路是:
现在用 ROW_NUMBER() 对筛选好的源数据排序,自关联比较相邻记录的时间差,对符合要求的记录通过 ROW_NUMBER() 再排序,得到的结果通过第二次的 ROW_NUMBER() 值自关联,在查询结果中用第一次的 ROW_NUMBER() 值求差,差值就是符合条件的联续记录数,分组后取最大值,得到结果:
OP_TIME 降序的 ROW_NUMBER(),取别名 SWF_ROW;
ROW_NUMBER(),取别名 RNN,待下一步用;
完整 sql 如下:
CREATE TABLE ta (unit_id int, swf_num int, fscl_date date, op_time date DEFAULT CURRENT_TIMESTAMP);
INSERT INTO ta VALUES (1950, 1000, to_date('2020-06-27', 'YYYY-MM-DD'), to_date('2020-06-27 22:25:45', 'YYYY-MM-DD hh24:mi:ss'));
INSERT INTO ta VALUES (1950, 1001, to_date('2020-06-27', 'YYYY-MM-DD'), to_date('2020-06-27 22:27:11', 'YYYY-MM-DD hh24:mi:ss'));
INSERT INTO ta VALUES (1950, 1002, to_date('2020-06-27', 'YYYY-MM-DD'), to_date('2020-06-27 22:38:29', 'YYYY-MM-DD hh24:mi:ss'));
INSERT INTO ta VALUES (1950, 1003, to_date('2020-06-27', 'YYYY-MM-DD'), to_date('2020-06-27 22:39:22', 'YYYY-MM-DD hh24:mi:ss'));
INSERT INTO ta VALUES (1950, 1004, to_date('2020-06-27', 'YYYY-MM-DD'), to_date('2020-06-27 22:43:45', 'YYYY-MM-DD hh24:mi:ss'));
INSERT INTO ta VALUES (1950, 1006, to_date('2020-06-27', 'YYYY-MM-DD'), to_date('2020-06-27 22:58:50', 'YYYY-MM-DD hh24:mi:ss'));
INSERT INTO ta VALUES (1950, 1007, to_date('2020-06-27', 'YYYY-MM-DD'), to_date('2020-06-27 22:59:55', 'YYYY-MM-DD hh24:mi:ss'));
INSERT INTO ta VALUES (1957, 1000, to_date('2020-06-27', 'YYYY-MM-DD'), to_date('2020-06-27 09:06:41', 'YYYY-MM-DD hh24:mi:ss'));
INSERT INTO ta VALUES (1957, 1001, to_date('2020-06-27', 'YYYY-MM-DD'), to_date('2020-06-27 09:09:36', 'YYYY-MM-DD hh24:mi:ss'));
INSERT INTO ta VALUES (1957, 1002, to_date('2020-06-27', 'YYYY-MM-DD'), to_date('2020-06-27 12:20:59', 'YYYY-MM-DD hh24:mi:ss'));
INSERT INTO ta VALUES (1957, 1003, to_date('2020-06-28', 'YYYY-MM-DD'), to_date('2020-06-28 07:50:09', 'YYYY-MM-DD hh24:mi:ss'));
INSERT INTO ta VALUES (1957, 1004, to_date('2020-06-28', 'YYYY-MM-DD'), to_date('2020-06-28 08:14:37', 'YYYY-MM-DD hh24:mi:ss'));
INSERT INTO ta VALUES (1957, 1005, to_date('2020-06-28', 'YYYY-MM-DD'), to_date('2020-06-28 08:19:00', 'YYYY-MM-DD hh24:mi:ss'));
INSERT INTO ta VALUES (1950, 1006, to_date('2020-06-28', 'YYYY-MM-DD'), to_date('2020-06-28 10:18:12', 'YYYY-MM-DD hh24:mi:ss'));
INSERT INTO ta VALUES (1950, 1007, to_date('2020-06-28', 'YYYY-MM-DD'), to_date('2020-06-28 10:24:57', 'YYYY-MM-DD hh24:mi:ss'));
INSERT INTO ta VALUES (1950, 1008, to_date('2020-06-29', 'YYYY-MM-DD'), to_date('2020-06-29 07:36:07', 'YYYY-MM-DD hh24:mi:ss'));
INSERT INTO ta VALUES (1957, 1006, to_date('2020-06-29', 'YYYY-MM-DD'), to_date('2020-06-29 09:10:39', 'YYYY-MM-DD hh24:mi:ss'));
INSERT INTO ta VALUES (1957, 1007, to_date('2020-06-29', 'YYYY-MM-DD'), to_date('2020-06-29 12:30:19', 'YYYY-MM-DD hh24:mi:ss'));
WITH TEMP_TA AS ( --原始数据
SELECT TA.UNIT_ID, TA.SWF_NUM, TA.OP_TIME, TA.FSCL_DATE
FROM TA
),
MA AS ( --最大时间记录
SELECT X.UNIT_ID,MAX(X.SWF_NUM) AS MAX_SWF_NUM, X.FSCL_DATE, MAX(X.OP_TIME) AS OP_TIME
FROM TEMP_TA X
GROUP BY X.UNIT_ID,X.FSCL_DATE
),
MI AS ( --最小时间记录
SELECT X.UNIT_ID,MIN(X.SWF_NUM) AS MIN_SWF_NUM,X.FSCL_DATE,MIN(X.OP_TIME) AS OP_TIME
FROM TEMP_TA X
GROUP BY X.UNIT_ID,X.FSCL_DATE
),
XR AS (--处理源数据
SELECT UN.*,ROW_NUMBER() OVER( PARTITION BY UN.UNIT_ID ORDER BY UN.UNIT_ID,UN.OP_TIME DESC) SWF_ROW
FROM (
--制造更小记录 开始 在第一个记录前制造一个记录号-1 的更小记录,防止开头出现符合条件的连续记录
SELECT MI.UNIT_ID,MI.MIN_SWF_NUM-1 AS SWF_NUM, FSCL_DATE,
MI.OP_TIME-11/(24*60) AS OP_TIME --制单时间比第一个真实记录的制单时间早 11 分钟
FROM MI MI --制造第一个相差分钟数大于 11 分钟(反正间隔大于 10 分钟就行)的记录,使之不符合要求
--制造更小记录 结束
UNION ALL
--正常记录 开始
SELECT X.UNIT_ID,X.SWF_NUM,X.FSCL_DATE,X.OP_TIME FROM TEMP_TA X
--正常记录 结束
UNION ALL
--制造更大记录 开始 在第后一个记录后制造一个记录号+1 的更大记录
SELECT MA.UNIT_ID,MA.MAX_SWF_NUM + 1 AS SWF_NUM,FSCL_DATE,
MA.OP_TIME+11/(24*60) AS OP_TIME --制单时间比实际最后一个记录制单时间晚 6 分钟
FROM MA MA --制造第一个相差分钟数大于 11 分钟的记录,防止结尾出现符合条件的连续记录
--制造更大记录 结束
) UN
),
FI AS(
SELECT A.*, ROW_NUMBER() OVER(PARTITION BY A.UNIT_ID ORDER BY A.UNIT_ID, A.SWF_ROW DESC) RNN
FROM (
SELECT XR.UNIT_ID,XR.SWF_ROW, XR.FSCL_DATE,
CASE
WHEN ROUND((XR.OP_TIME - X.OP_TIME) * 24 * 60, 2) <= 10 THEN 1
WHEN ROUND((XR.OP_TIME - X.OP_TIME) * 24 * 60, 2) > 10 THEN 0
END AS TT --是否符合间隔 10 分钟的条件,符合置 1 不符合置 0
FROM XR XR
LEFT JOIN XR X ON XR.UNIT_ID = X.UNIT_ID AND XR.FSCL_DATE = X.FSCL_DATE AND X.SWF_ROW - 1 = XR.SWF_ROW
WHERE X.SWF_NUM IS NOT NULL
ORDER BY XR.SWF_NUM DESC
) A
WHERE A.TT = '0'
)
SELECT FI.UNIT_ID, FI.FSCL_DATE, MAX(FI.SWF_ROW - NVL(FI2.SWF_ROW,0)) MAX_CNT
FROM FI
LEFT JOIN FI FI2 ON FI.UNIT_ID = FI2.UNIT_ID AND FI.RNN = FI2.RNN - 1
GROUP BY FI.UNIT_ID, FI.FSCL_DATE
HAVING MAX(FI.SWF_ROW-COALESCE(FI2.SWF_ROW,0)) > 1
ORDER BY FI.UNIT_ID,FI.FSCL_DATE
备案了,已成功将网站转移到腾讯云,整个备案过程历时大半年,原本预计4月份 RAMNODE 的 VPS 到期就切会国内,谁曾想因为种种无法抗拒的因素,直接导致网站终端两个月的服务,7月22收到备案成功的通知,7月31号收到天津当局的通知,说通信地址区县填的有问题,需要变更备案,于是提交了变更(基本等于重新备案一次),昨天收到变更成功通知,过程充满辛酸。
记录一下配置这个博客遇到的跨域问题及解决办法,以备不时之需。
通过二级域名加载 CSS 文件,在 CSS 文件里引用当前二级域名下的字体文件,网页上字体图标无法显示,浏览器控制台报错:CORS Missing Allow Origin。
在二级域名的 nginx 配置文件中加入 add_header 'Access-Control-Allow-Origin' '主域名URL'。
出自:https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS/Errors/CORSMissingAllowOrigin