- 博客(50)
- 资源 (15)
- 收藏
- 关注
原创 注意的日期取值的话两边的类型要一致
--注意的是少了一个月的数据(后面的小于等于只是到了2017年2月1号的数据)SELECT COUNT(*) FROM DSJYDD.AIR_CITYDAYAQI_PUBLISH A WHERE TIMEPOINT >= TO_DATE('2017-01','YYYY-MM')AND TIMEPOINT --这样写的话正好不少数据注意的是两边的类型一致,TIMEPOINT是TI
2017-11-30 20:02:31 288
原创 DB2获取第一天
set schema lyma; SELECT TO_CHAR(LAST_DAY(SYSDATE), 'yyyy-mm-dd') FROM lyma.DUAL; --本月最后一天 SELECT TO_CHAR(LAST_DAY(ADD_MONTHS(SYSDATE, -1)), 'yyyy-mm-dd') FROM lyma.dual; --上月最后一天 SELECT TO
2017-11-30 18:52:09 2459
原创 SQL语句中的rank () over , row_number() over ,rank_dense ()
总结如下:我创建了一个表,数据如下,SQL> select * from test;A1 A2---------- ----------1 32 43 23 54 2然后用rank () over,SQL> select a1,a2,rank () over (order by a1) rank from test;A1 A2 RANK-----
2017-11-30 11:20:09 1391
原创 Oracle中rank() over, dense_rank(), row_number() 的区别
Oracle中rank() over, dense_rank(), row_number() 的区别假设现在有一张学生表student,学生表中有姓名、分数、课程编号,现在我需要按照课程对学生的成绩进行排序。select * from student1. rank over ()可以实现对学生排名,特点是成绩相同的两名是并列,如下1 2 2 4 5rank
2017-11-30 11:00:58 330
原创 Sql 四大排名函数(ROW_NUMBER、RANK、DENSE_RANK、NTILE)简介
排名函数是Sql Server2005新增的功能,下面简单介绍一下他们各自的用法和区别。我们新建一张Order表并添加一些初始数据方便我们查看效果。 CREATE TABLE [dbo].[Order]( [ID] [int] IDENTITY(1,1) NOT NULL, [UserId] [int] NOT NULL, [TotalPrice
2017-11-30 10:49:13 453
原创 NOTEPAD使用
NOTEPAD使用:要让横着显示的文字变成竖着显示的话,这个时候利用NOTEPAD软件就能做到,按照上面的方式勾上下面的扩展的勾勾就行了\T是制表符 \N是换行
2017-11-29 19:56:30 1222
原创 相信自己
增强自信心,相信自己,永远都要坚定信心,永远都要相信自己!!!对于计算日数据的表可以创建一个新的表生成月的数据表,这样的话能很好的优化自己的SQL查询性能,注意的是多个字段的时候,写的更新语句,最重要的一点是要时刻相信自己,相信自己的想法,相信自己的思维是正确的,不要畏手畏脚的,要大胆去尝试,没有哪个项目是没有BUG的,记住了,也没有哪个项目是一次性就能让客户完全满意的,不要怀疑自己的想法
2017-11-29 18:30:00 285
原创 DB2时间函数
--获取当前日期:select current date from sysibm.sysdummy1; values current date;--获取当前日期 select current time from sysibm.sysdummy1; values current time; --获取当前时间戳 select current timestamp fr
2017-11-29 14:00:46 401
原创 ORACLE日期时间函数大全
ORACLE日期时间函数大全 TO_DATE格式(以时间:2007-11-02 13:45:25为例) Year: yy two digits 两位年 显示值:07 yyy three digits 三位年 显示值:007 yyy
2017-11-27 09:43:07 533
原创 Oracle中Left join的on和where的效率差别
假设有两个表a、b使用onSelect * from a left join b on b.col = a.col and b.col2 = ‘aa’使用 whereSelect * from a left join b on b.col = a.col where b.col2 = ‘aa’ and b.col2 is null// b.col2 is n
2017-11-24 14:25:35 3832
原创 INNER JOIN,LEFT JOIN,RIGHT JOIN的连接方式
INNER JOIN,LEFT JOIN,RIGHT JOIN的连接方式INNER JOIN的结果是两个表根据某个字段相关联查询出来的结果的值!LEFT JOIN的结果是INNER JOIN查询出来的结果集加上左边的表中没有关联上的数据,没有的值用NULL替代!RIGHT JOIN的结果是INNER JOIN查询出来的结果集加上右边的表中没有关联上的数据,没有的值用NULL替代
2017-11-24 14:18:59 330
原创 Oracle inner join、left join、right join 、+左边或者右边的区别
create table l as select 'left_1' as str,'1' as v from dual union allselect 'left_2' ,'2' as v from dual union allselect 'left_3' ,'3' as v from dual union allselect 'left_4' ,'4' as v from du
2017-11-24 14:14:47 426
原创 Oracle inner join、left join、right join 、+左边或者右边的区别
我们以Oracle自带的表来做例子主要两张表:dept、emp一个是部门,一个是员工表结构如下:empnamenull?TypeEmpnonot nullnumber(4)ename varchar2(10)job varchar2(9)mgr number(4)
2017-11-24 14:12:21 1428
原创 INNER JOIN,LEFT JOIN,RIGHT JOIN的连接方式
INNER JOIN,LEFT JOIN,RIGHT JOIN的连接方式INNER JOIN的结果是两个表根据某个字段相关联查询出来的结果的值!LEFT JOIN的结果是INNER JOIN查询出来的结果集加上左边的表中没有关联上的数据,没有的值用NULL替代!RIGHT JOIN的结果是INNER JOIN查询出来的结果集加上右边的表中没有关联上的数据,没有的值用NULL替代
2017-11-24 14:10:55 214
原创 oracle判断一个字符串中是否包含另外一个字符串
select * from a where instr(a,b)>0;用于实现B字段是A字段中的某一部分的时候,要论顺序或者要相邻的字符。如果想要不论顺序或者不相邻的字符时,定义函数可以实现:select * from a where instr(a,b)>0;这个只能实现B字段是A字段中的某一部分的时候。如果想要不论顺序或者不相邻的字符时,定义函数可以实现 create
2017-11-24 11:56:59 5145
原创 oracle判断是否包含字符串的方法
首先想到的就是contains,contains用法如下:[sql] view plain copyselect * from students where contains(address, 'beijing') 但是,使用contains谓词有个条件,那就是列要建立索引,也就是说如果上面语句中students表的addre
2017-11-24 11:55:08 720
原创 ORACLE创建索引
1. CREATE INDEX命令语法: CREATE INDEXCREATE [unique] INDEX [user.]indexON [user.]table (column [ASC | DESC] [,column[ASC | DESC] ] ... )[CLUSTER [scheam.]cluster][INITRANS n][MAXTRANS
2017-11-24 11:54:00 1827
原创 书写sql案例
SELECTCOUNT(*)CNT_CS,SUM(CNT_HOUR)BB_SC FROM (SELECTHOURDIF,COUNT(*)CNT_HOURFROM (SELECTROUND((TO_DATE(ATIMEPOINT,'YYYY-MM-DD HH24:MI:SS')- TO_DATE(BTIMEPOINT,'YYYY
2017-11-24 10:57:26 230
原创 oracle中rownum和row_number()
row_number()over(partition by col1 order by col2)表示根据col1分组,在分组内部根据col2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)。 与rownum的区别在于:使用rownum进行排序的时候是先对结果集加入伪劣rownum然后再进行排序,而row_number()在包含排序从句后是先排序再计算行号码。一、o
2017-11-24 10:45:00 1005
原创 Oracle中trunc函数、round 函数、ceil函数和floor函数的使用
1.1trunc函数处理数字trunc函数返回处理后的数值,其工作机制与ROUND函数极为类似,只是该函数不对指定小数前或后的部分做相应舍入选择处理,而统统截去。其具体的语法格式如下TRUNC(number[,decimals])其中:number 待做截取处理的数值decimals 指明需保留小数点后面的位数。可选项,忽略它则截去所有的小数部分。
2017-11-23 18:01:18 684
原创 Oracle trunc()函数的用法
--Oracle trunc()函数的用法/**************日期********************/1.select trunc(sysdate) from dual --2013-01-06 今天的日期为2013-01-062.select trunc(sysdate, 'mm') from dual --2013-01-01 返回当月第一天.3.select trunc(sy
2017-11-23 16:23:46 626
原创 Oracle计算时间差表达式
Oracle计算时间差表达式 --获取两时间的相差豪秒数select ceil((To_date('2008-05-02 00:00:00' , 'yyyy-mm-dd hh24-mi-ss') - To_date('2008-04-30 23:59:59' , 'yyyy-mm-dd hh24-mi-ss')) * 24 * 60 * 60 * 1000) 相差豪
2017-11-23 14:33:48 481
原创 Oracle 计算两个时间的差值
有两个日期数据START_DATE,END_DATE,欲得到这两个日期的时间差(以天,小时,分钟,秒,毫秒):天:ROUND(TO_NUMBER(END_DATE - START_DATE))小时:ROUND(TO_NUMBER(END_DATE - START_DATE) * 24)分钟:ROUND(TO_NUMBER(END_DATE - START_DATE) * 2
2017-11-23 14:30:27 2272
原创 Oracle查询某段日期内某个时间段的数据
Oracle查询某段日期内某个时间段的数据查询最近一周12:30分到13:00这段时间内的订单量:SELECT * FROM T_ORDER O WHERE O.CREATEDATETIME BETWEEN SYSDATE-7 AND SYSDATE AND TO_CHAR(O.CREATEDATET
2017-11-23 14:14:42 15621 1
原创 oracle查询一段时间内的数据
oracle查询一段时间内的数据:左右两边要是char类型的话就都是char类型,要都是date类型就都是date类型SELECT* FROM AIR_CITYHOURAQI_PUBLISHWHERETO_DATE(TIMEPOINT,'YYYY-MM-DD HH24:MI:SS')>=TO_DATE('2017-5-23 12:00:00','YYYY-M
2017-11-23 13:20:55 13080
原创 Oracle 中 call 和 exec的区别
Oracle 中 call 和 exec的区别今天发现了一个小东西,觉得很有意思,查找了一些资料,跟大家分享一下:在sqlplus中:在第三方提供的工具(如:plsqldev) 总结:exec是sqlplus的命令,只能在sqlplus中使用。call是sql命令,任何工具都可以使用,call必须有括号,即例没有参数
2017-11-22 13:55:06 2879 2
原创 PLSQL常用函数
PLSQL常用函数 1)处理字符的函数 || 或 CONCAT---并置运算符。 格式∶CONCAT(STRING1, STRING2) 例:’ABC’|| ’DE’=’ABCDE’ CONCAT(‘ABC’,’DE’) =’ABCDE’ ASCII---返回字符的ASCII码。 例:ASCII(‘A’) = 65 CH
2017-11-22 13:15:08 3821
原创 调试存储过程
1.oracle的plsql developer工具中,点击存储过程右键增加 add debug information2.然后点击测试调试存储过程(右键测试)3、开始调试。点击工具条上Start图标或者按F9进入调试模式,以后的调试过程跟我们熟悉的的调试过程就一样了(下面是菜单或者工具条上的部分调试功能):Run(Ctrl+R)全速运行,到断点停下;St
2017-11-22 11:39:48 673
原创 bug
SELECT PM2_5,ROUND((PM2_5-QNPM2_5)/QNPM2_5 * 100) PM2_5TB,'2018年3月目标SELECT ROUND(AVG(A.PM2_5_24H)) PM2_5,(SELECT ROUND(AVG(B.PM2_5_24H)) FROM TENV.AIR_CITYDAYAQI_PUBLISH B WHERE TO_CHAR(B.TIMEPO
2017-11-21 10:29:52 209
原创 db2计算小时之间的差
SELECT AREA,SUM_HOUR AS AQIBBSC,CNT_HOUR AS AQICXBBCS,LONGITUDE,LATITUDE FROM (SELECT AREA,SUM_HOUR,CNT_HOUR,C.LONGITUDE,C.LATITUDE,ROW_NUMBER() OVER (PARTITION BY E.AREA ORDER BY E.AREA DESC) AS
2017-11-20 18:30:19 898
原创 DB2获取(小时)时间差值
SELECT AREA,ATIMEPOINT,BTIMEPOINT,--TIMESTAMPDIFF(8,CHAR(ATIMEPOINT-BTIMEPOINT)),HOUR(TIME(ATIMEPOINT)-TIME(BTIMEPOINT))FROM (SELECT TIMEPOINT ATIMEPOINT,AREA, (SELECT TIMEPOINT FROM TENV
2017-11-20 13:58:48 2823
原创 DB2列转行,listagg的使用方法
SELECT LISTAGG(sys_menu_name, ',') FROM sys_menu_tb;注意事项:1. listagg的长度限制4000,和页面4k的varchar2一样(在DB2表空间的页面有4,8,16,32k四种,只要表空间的页面尺寸大于上面算出来的数值就可以放置该表。DB2在缺省的时候创建的表空间都是4k的)。2. listagg只
2017-11-15 17:15:02 10022
原创 ORACLE 日期加减操作
无论是DATE还是timestamp都可以进行加减操作。可以对当前日期加年、月、日、时、分、秒,操作不同的时间类型,有三种方法:1 使用内置函数numtodsinterval增加小时,分钟和秒2 加一个简单的数来增加天3 使用内置函数add_months来增加年和月例:对当前日期增加一个小时:SQL> select sysdate, sysdate+numtod
2017-11-13 18:23:10 16145 1
原创 ORACLE日期时间函数大全
ORACLE日期时间函数大全 TO_DATE格式(以时间:2007-11-02 13:45:25为例) Year: yy two digits 两位年 显示值:07 yyy three digits 三位年 显示值:007 yyy
2017-11-13 16:17:03 310
原创 db2并列排序
SELECT DENSE_RANK() OVER(ORDER BY FENSHU DESC) RK,T.* FROM STUDENT_RESULT TSELECT DENSE_RANK() OVER(ORDER BY T.PARENTCODE DESC) RK,T.* FROM TCODE.T_COD_REGION T
2017-11-10 10:34:34 2314
原创 WITH AS 用法
with as语法–针对一个别名with tmp as (select * from tb_name)–针对多个别名with tmp as (select * from tb_name), tmp2 as (select * from tb_name2), tmp3 as (select * from tb_name3), …
2017-11-08 17:15:23 782
原创 ORACLE WITH AS 用法
语法:with tempName as (select ....)select ... 例:现在要从1-19中得到11-14。一般的sql如下:select * from( --模拟生一个20行的数据 SELECT LEVEL AS lv FROM DUAL
2017-11-08 17:02:27 297
原创 oracle MINUS和NOT EXISTS、EXISTS和INTERSECT
有两个表,表中的记录如下:表tb_test中的数据有:SQL> select * from tb_test; ID NAME AGE------------------------------------
2017-11-08 16:53:43 1232
原创 oracle中的exists 和not exists 用法
exists (sql 返回结果集为真) not exists (sql 不返回结果集为真) 如下: 表A ID NAME 1 A1 2 A2 3 A3 表B ID AID NAME 1 1 B1 2 2 B2 3 2 B3 表A和表B是1对多的关系 A.ID => B.AID SELECT ID,NAME FROM A WHERE
2017-11-08 16:08:47 252
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人