for your wish
好记性不如烂笔头。个人笔记用的博客
展开
-
Mysql的时间类型选定:Datetime,Timestamp,Bigint
1. 基本区别:2. 其他特性:1. TIMESTAMP是以utc格式存储,会自动检索当前时区对时间进行转换,而DATETIME不会。2. 存入null时,TIMESTAMP会自动存储当前时间,而DATETIME存储null值。3. 时间计算:DATETIME翻译为汉语即"时间戳",它是当前时间到 Unix元年(1970 年 1 月 1 日 0 时 0 分 0 秒)的秒数。原创 2022-12-02 15:28:28 · 1040 阅读 · 0 评论 -
试图inner join来限制left join的右表方式
首先想到的方式 直接限制select a.projectid ,DIM.projectname ,DIM.areaname ,to_char(a.msgtimestamp,'yyyyMMdd') --,count(a.id) ,count(1) --客户询问数目 ,count(b.id) --24小时回复数目from ods.xk_c_user_broker_chat_records a原创 2021-11-04 15:29:24 · 197 阅读 · 0 评论 -
Oracle常用处理函数
处理分母为0的情况 decode(sales_num,0,0,total_price/sales_num)特定字符串前后数据--之前的得到AAA select substr('AAA-BBB',1,instr('AAA-BBB','-',-1)-1) 值 from dual;--之后的得到BBB select substr('AAA-BBB',instr('AAA-BBB','-',-1)+1,length('AAA-BBB')) 值 from ...原创 2021-09-27 14:54:07 · 310 阅读 · 0 评论 -
Oracle查看表结构,建表带注释,包内容
前面的TABLE写死,后面的就是表名SELECT DBMS_METADATA.GET_DDL('TABLE','NCHAR_TST') FROM DUAL;原创 2021-09-14 09:13:05 · 793 阅读 · 0 评论 -
月度累加,年度累加(多年)-Sum Over
sum over可以完美解决历史累加的问题其中有数据的跨年问题,需要年度重新统计,就在partition by中增加年字段即可select PROJ_ID -- 项目id ,PLAN_MTH .原创 2021-09-01 17:43:23 · 746 阅读 · 0 评论 -
Oracle函数+循环示例
自定义函数函数的定义:create/replace function 函数名 (参数名 输入输出类型 字段类型) return 字段类型 is变量名 字段类型; --函数的内部变量,需要包含字段类型的长度begin主体;return(变量名);end 函数名;观察到:定义函数的参数和输出类型的时候不需要考虑字段类型的长度;函数的内部变量需包含字段类型的长度;函数可以没有输入输出参数,但一定要有返回(return)的数据类型,因此必须有内部变量存储return的数据;函数的输入输出原创 2021-08-13 14:23:41 · 795 阅读 · 0 评论 -
遇到的神坑挖坑
union all 之后 最后的 尾号 0 消失了原创 2021-06-09 17:24:01 · 112 阅读 · 0 评论 -
连续七天登录-在线人数最多
select id,count(*)from(select *,date_add(dated,-rown) as startdate from (select *,row_number() over(PARTITION by id order by dated) as rown from (select distinct id, to_date(date) as dated ...原创 2021-05-17 10:13:33 · 1319 阅读 · 0 评论 -
Sql语句执行顺序
select语句的执行顺序Processing Order of the SELECT statementThe following steps show the processing order for a SELECT statement.1.FROM2.ON3.JOIN4.WHERE5.GROUP BY6.WITH CUBE or WITH ROLLUP7.HAVING8.SELECT9.DISTINCT10.ORDER BY11.TOP原创 2020-11-18 10:03:03 · 134 阅读 · 0 评论 -
SCD问题中的第三类实际应用
某一天的数据start_dt<=to_Date('20200801','yyyyMMdd') and end_dt>to_Date('20200801','yyyyMMdd')某段时间的数据 如8/01到8/30原创 2020-09-21 18:30:34 · 7856 阅读 · 1 评论 -
numeric overflow occurred数值溢出
如果是整数型就cast成bigint如果是浮点型就是小数点后数目不够原创 2020-09-21 15:59:42 · 3755 阅读 · 0 评论 -
筛选条件写在表内,on上,where上的区别
首先看筛选条件写在表内 (AND Calc_TYPE <> 0这个筛选条件写在了T表内)SELECT '' AS Rpt_Item_ID ,T.Rpt_Item_Desc AS Rpt_Item_Desc ,'R'||TRIM(T.Sort_No) AS Idx_Row ,1 AS Dis..原创 2020-08-25 17:29:52 · 478 阅读 · 0 评论 -
多条数据合并成一条|一条数据拆分成多条
concat_ws(分隔符,字段) from xxx group by原创 2020-08-25 15:09:13 · 1269 阅读 · 0 评论 -
得出字段中某字符个数,判断字符串中是否含有某字符
以下含义就是: 查询字段的长度 减去 用空白替换逗号之后的该字段的长度 加一LENGTH(字段)-LENGTH(REPLACE(字段,',',''))+1原创 2020-08-17 13:39:42 · 138 阅读 · 0 评论 -
本服务器切换到其他服务器的mysql
mysql -u root -p123456 -P3323 -h152.49.1.113后面两个是端口和IP地址原创 2019-05-16 10:19:38 · 309 阅读 · 0 评论 -
中文机构排序
可以表中放入机构编码,机构名,增加排序字段(数字),按数字排序原创 2020-06-23 12:28:54 · 342 阅读 · 0 评论 -
Mysql中插入否则(替换,更新,忽略)
插入或替换如果我们想插入一条新记录(INSERT),但如果记录已经存在,就先删除原记录,再插入新记录。情景示例:这张表存的每个客户最近一次交易订单信息,要求保证单个用户数据不重复录入,且执行效率最高,与数据库交互最少,支撑数据库的高可用。此时,可以使用"REPLACE INTO"语句,这样就不必先查询,再决定是否先删除再插入。"REPLACE INTO"语句是基于唯一索引或主键来判断唯一(是否存在)的。注意事项:如下SQL所示,需要在username字段上建立唯一索引(Unique),t原创 2020-06-19 11:01:49 · 753 阅读 · 0 评论 -
MySql/Oracle实现跨服务器查询数据
同服务器下跨数据库进行查询在表前加上数据库名就可以查询到数据。mysql跨服务器进行查询提供了FEDERATED引擎进行映射表,然后进行查询。mysql数据库federated引擎是关闭的,首先需要先启用该引擎。mysql执行show engines命令查看引擎状态。启用FEDERATED引擎Windows下找到my.ini修改mysql配置。该文件是隐藏在ProgramData文件夹,在该地址:C:\ProgramData\MySQL\MySQL Server 5.7,可以通过%Prog原创 2020-06-17 16:45:38 · 1486 阅读 · 0 评论 -
Mysql存储过程和触发器,update语法
超简说明:sql1执行->触发->一条或多条其他sql慎用触发器,不用就删除触发器是针对每一行的;对增删改非常频繁的表上切记不要使用触发器,因为它会非常消耗资源。原创 2020-05-14 18:25:30 · 1298 阅读 · 0 评论 -
Mysql实现split函数
Mysql没有Split函数,需要自己实现DELIMITER $$DROP function IF EXISTS `func_splitString` $$CREATE FUNCTION `func_splitString`( f_string varchar(1000), f_delimiter varchar(5), f_order int)RETURNS varchar(255) CHARSET utf8BEGINdeclare result varchar(2原创 2020-05-14 15:56:02 · 449 阅读 · 0 评论 -
Mysql的用户变量,系统变量以及实现开窗函数
row_num实现(设置用户变量为0,每取出一条数据增加1)SELECT @rowno:=@rowno+1 as rowno,r.*from grade_table r ,(select @rowno:=0) t;9.3.用户变量可以先在用户变量中保存值然后在以后引用它;这样可以将值从一个语句传递到另一个语句。用户变量与连接有关。也就是说,一个客户端定义的变量不能被其它客户端...原创 2020-04-23 15:36:58 · 309 阅读 · 0 评论 -
MYSQL千万级大数据SQL查询优化
count(field)速度非常慢,建议使用count(1)和count(*)过滤操作尽量写在最内层,过滤要趁早原创 2020-04-21 19:33:02 · 623 阅读 · 0 评论 -
Hive分析窗口函数row_number,LAG,LEAD,FIRST_VALUE,LAST_VALUE
学习这四个分析函数。 注意: 这几个函数不支持WINDOW子句。Hive版本为 apache-hive-0.13.1数据准备:水电费 cookie1,2015-04-10 10:00:02,url2 cookie1,2015-04-10 10:00:00,url1 cookie1,2015-04-10 10:03:04,1url3 cookie1,201...转载 2020-04-21 15:44:18 · 760 阅读 · 0 评论 -
按指定符号切割字符串以及其他字符串操作
例子:str=www.wikibt.com substring_index(str,'.',1) 结果是:www substring_index(str,'.',2) 结果是:www.wikibt 也就是说,如果count是正数,那么就是从左往右数,第N个分隔符的左边的全部内容 相反,如果是负数,那么就是从右边开始...原创 2020-04-08 14:16:12 · 1312 阅读 · 0 评论 -
MySql时间的问题
Sat Dec 01 00:00:00 CST 2018 格林威治时间数据无法标准化str_to_date()要对应,空格是空格 Sat是%a STR_TO_DATE('Sat Dec 01 00:00:00 CST 2018','%a %b %d %H:%i:%S CST %Y')时间增减(减6个月) ...原创 2020-04-03 14:36:30 · 441 阅读 · 0 评论 -
DB2,Mysql,Oracle数据库比较以及Oracle的存储过程
DB2适用于数据集较大的分析,oracle适用于事务处理Oracle的物理复制数据在大数据场景下很无力,几个G几十个G的复制,大事务很差而mysql是逻辑复制,binlog日志存储过程依赖于数据库,不依赖于表。这些存储过程都要先执行一遍才能调用。执行:不单单是exec一下,还是得分情况:1.如果是命令窗口就用exec 存储过程名,举个例子: 1 ...转载 2019-05-16 10:00:53 · 907 阅读 · 0 评论 -
MySQL执行计划
查询较大表之前show create table看下索引(index,key),使用索引查询。执行前看看执行计划MySql提供EXPLAIN语法用来进行查询分析,在SQL语句前加一个“EXPLAIN”,例:EXPLAIN SELECT * FROM T_CLASS WHERE CLASS_NAME="网络工程"1执行结果:执行结果解释:select_type: 数据库引擎...转载 2019-02-28 11:39:22 · 155 阅读 · 0 评论