ORACLE学习笔记

截取日期

trunc(sysdate,'mm'或者'dd'),sysdate只能为日期型,如果帆软返回值为字符串形式则要先做to_date处理,即,

where 1=1
     and t2.CHECK_TIME <= TO_char(trunc(to_date('${End_Time}','yyyy-mm-dd hh24:mi:ss'),'dd')+7/24,'yyyy-mm-dd hh24:mi:ss')

返回当前月份的最后一天  select trunc(last_day(sysdate),'DD')+7/24 from dual

结果

select to_char(sysdate,'q') from dual;--取得当前时间的季度

sum ()over()累加

实现逐行累加

缺陷:遇到相同的数值时会将这些相同的数值看做一个组,一次性累加上组内所有相同值的和,例:

有数据列1,1,2,2,2,3,3                   希望逐行累加结果为1,2,3,4,6,8,11,14

但是使用sum() over()仅能实现  2,2,8,8,8,14,14

解决办法:使用row_number over(order by)先给这列数据不重复排序,得到序列1.2.3.4.5.6.7

再按照次序列做sum (要求和的列)over(order by 序列)运算,即可得到预期结果

count 加条件

select count (*) from table_name where a.number=' 123 '

计算符合a.number=' 123 '的行数

count(1)、count(*)、count(column),都可以计算行数,一般使用:

select count(1) from table_name  

两次检测查询

一个条码有两个检测时间,第二次检测会覆盖第一次检测,如果用时间排序则可以找到第一次检测,可以通过new_flag=0/1选中最新or初始的数据。

select * from mes.dc_dcs_bcheck bcheck
where 1=1
and bcheck.object_name  = '2612105998'

group by 语句

如果group by 的一列,如date是完全一致的值,那么group by 将会把它拆解为与行数相等的不同值,分开计算,

如:

group by 第一列 production——shift,日期没有合并计算

但是 如果去掉这列的group by ,eqo列相等的相加

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值