12345 Row_number函数返回一个唯一的值,当碰到相同数据时,排名按照记录集中记录的顺序依次递增。 ②DENSE_RANK:12223 Dense_rank函数返回一个唯一的值,除非当碰到相同数据时,此时所有相同数据的排名都是一样的。 ③RANK:12225 Rank函数返回一个唯一的值,除非遇到相同的数据时,此时所有相同数据的排名是一样的, 同时会在最后一条相同记录和下一条不同记录的排名之间空出排名。-- ①对所有客户按订单总额进行排名 -- ②按...
-- 列出上一年度每个月的销售总额、年底销售额以及每个月的销售额占全年总销售额的比例 -- 方法①: select all_sales.*, 100 * round(cust_sales / region_sales, 2) || ‘%‘ Percent from (select o.cust_nbr customer,o.region_id region, sum(o.tot_sales) cust_sales, sum(sum(o.tot_sales)) over(partition by o.region_id) region_sales from orders_tmp o where o.year = 2001 group by o.region_id, o.cust_nbr) all_sal...
)下有一个SQL语句执行非常频繁,一个小时执行了上万次: update seq$ set increment$=:2, minvalue=:3, maxvalue=:4, cycle#=:5, order$=:6, cache=:7, highwater=:8, audit$=:9, flags=:10 where obj#=:1 那么seq$这个数据字典表是做什么用的呢? 其实这个数据字典表是保存的是数据库下序列对象(SEQUENCE)的相关信息,而且它用来维护序列的变化。如下所示,我们通过实验来验证一下,我们启用10046事件,跟踪一下会话(leve...
)下有一个SQL语句执行非常频繁,一个小时执行了上万次: update seq$ set increment$=:2, minvalue=:3, maxvalue=:4, cycle#=:5, order$=:6, cache=:7, highwater=:8, audit$=:9, flags=:10 where obj#=:1 那么seq$这个数据字典表是做什么用的呢? 其实这个数据字典表是保存的是数据库下序列对象(SEQUENCE)的相关信息,而且它用来维护序列的变化。如下所示,我们通过实验来验证一下,我们启用10046事件,跟踪一下会话(leve...
TABLE "CS_GDBZDATA"."ACCT_WORK_REGISTER" ( "CURDATE" VARCHAR2(10) NOT NULL ENABLE, "MWORKBEGINTIME" VARCHAR2(8), "MWORKENDTIME" VARCHAR2(8), "AWORKBEGINTIME" VARCHAR2(8), "AWORKENDTIME" VARCHAR2(8), "NWORKBEGINTIME" VARCHAR2(8), "NWORKENDTIME" VARCHAR2(8), "WEEK" VARCHAR2(1), "WORKFLAG" VARCHAR2(10), "AREATYPE" VARCHAR2(10), "WORKFLAGHK" VARCHAR2(10), "WORKFLAGMC" VARCHAR2(10)) SEGMENT CREATION...
table CRISS_SALES (DEPT_ID VARCHAR2(6), --部门号SALE_DATE DATE, --销售日期GOODS_TYPE VARCHAR2(4), --货物类型SALE_CNT NUMBER(10) --销售数量 );插入测试数据:insert into CRISS_SALES values (‘D01‘, TO_DATE(‘20140304‘, ‘YYYYMMDD‘), ‘G00‘, 700); insert into CRISS_SALES values (‘D02‘, TO_DATE(‘20140306‘, ‘YYYYMMDD‘), ‘G00‘, 500); insert into CRISS_SALES valu...
table {tablename}_his as select * from {tablename} where ...删除表数据。数据量太大(7444741)无法直接删除,需批量删除。declare cursor mycursor is SELECT ROWID FROM {tablename} WHERE ltl_time < to_date(‘2017-08-01‘,‘YYYY-mm-dd‘) order by rowid; --------按ROWID排序的Cursor,删除条件是XXX=XXXX,根据实际情况来定。type rowid_table_type is table of rowid index by pls_integer;v_rowid rowid_tabl...
INTO 如果没有记录是不会往下执行的,直接抛出NO_DATA_FOUND异常, 这个在plsql developer中直接测试执行没问题,会报ORA-1403异常。 但是在mybatis中调用的话就不会抛出NO_DATA_FOUND异常,而是在select * into语句为空时默默的终止执行该过程。 在服务层采用事务处理的话就有问题了,服务层调用 select * into为空的存储过程处理逻辑肯定是有毛病的,本来应该抛出异常扔给控制器层, 现在只是终止了,后面的语句还会执行,这样就...
最近在做一个OA系统的统计模块,里面有个功能需要统计出每天新增的用户和累计新增的用户, 只有一张 用户登录的表(用户登录时间,用户ID,等等),效果图: 分析:1,同一用户在一天之内可以登录多次,在这一天表中,会有多条这个用户的记录,但统计的时候,只能算一次 2,肯定会用登录时间分组,用户ID去重,把数据统计出来 由于是以前的项目,种种限制吧,必须用一个sql写出来,查了好久,SQL如下:<!-- 总用户--><se...
--显示各部门员工的工资,并附带显示该部分的最高工资。 SELECT E.DEPTNO,E.EMPNO,E.ENAME,E.SAL,LAST_VALUE(E.SAL) OVER(PARTITION BY E.DEPTNO ORDER BY E.SAL ROWS --unbounded preceding and unbouned following针对当前所有记录的前一条、后一条记录,也就是表中的所有记录--unbounded:不受控制的,无限的--preceding:在...之前--following:在...之后BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) MAX_SALFROM EM...
分析语句:SQL>analyze index <index_name> validate structure online; 分析表:analyze table tablename compute statistics; analyze index indexname compute statistics; 查看索引碎片的情况:SQL>select name,del_lf_rows_len,lf_rows_len,(del_lf_rows_len/lf_rows_len)*100 from index_stats;索引碎片率:(del_lf_rows_len/lf_rows_len)*100如果索引碎片率超过20%,oracle就会认为索引碎片已经非常严重,此时就需要对索引...
用一个经纬度跨度均为1的矩形作为检索条件 explain plan for select * from DLTB20150705 where MDSYS.SDO_ANYINTERACT(shape, SDO_GEOMETRY(2003,4610,null,sdo_elem_info_array(1,1003,3),sdo_ordinate_array(116,32,117,33)))=‘TRUE‘;此时执行计划的cardinality=14300,而真实返回的记录数是多少呢?显然,不是执行计划预计的14300。 现在我们把查询范围变大,设置纬度跨度均为2的矩形作为检索条件 explain plan for selec...
假设是ROLLUP(A, B, C)的话,GROUP BY顺序 (A、B、C) (A、B) (A) 最后对全表进行GROUP BY操作。 假设是GROUP BY CUBE(A, B, C),GROUP BY顺序 (A、B、C) (A、B) (A、C) (A) (B、C) (B) (C) 最后对全表进行GROUP BY操作。7、grouping函数 在以上样例中。是用rollup和cube函数都会对结果集产生null。这时候可用grouping函数来确认 该记录是由哪个字段得出来的 grouping函数使用方法,带一个參数,參数为字段名,结果是依据该字段得出...
like 后%位置不走索引问题 create table t2 as select * from dba_objects;——创建表 create index idx_t2_name on t2(object_name);——创建索引 set autotrace on ——开启执行计划跟踪 select * from t2 where object_name like ‘DE%‘;——走索引 select * from t2 where object_name like ‘%DE‘;——不走索引 查询字段类型与表字段类型不一致导致隐式转换,不走索引问题 create table t3(id varchar2(10),name varchar2(1...
假定我们有一个sys_user用户表,具体如下:字段 user_Id login_name password org_id create_time注释 用户主键 登陆名 密码 单位id 创建时间 --srcSql,最底层sql select * from SYS_USER t where t.org_id=‘402881e54c40d74d014c40d8407a0016‘ order by t.create_time desc;1、使用between ... and ... (不建议,数据量大情况下速度慢) 如果使用between ... and ... ,则对最底层进行再次封装成带行号的数据结果集,即...