select sysdate,to_char(sysdate,'yyyy-mm-dd')from dual; select sysdate,to_char(sysdate,'yyyy/mm/...dd')from dual; select sysdate,to_char(sysdate,'yyyymmdd')from dual; select sysdate,to_char...()可以得到日期中的年、月、日、时、分 select sysdate,to_char(sysdate,'yyyy')from dual; select sysdate,to_char.../15 2017/6/15 17:20:27 2017/6/15 2017/6/15 17:20:27 2017/6/15 注:to_date()得到的日期格式是和系统的日期格式保持一致...2.2、可以直接使用date'yyyy-mm-dd' select date'2017-5-1',to_date('20170615','yyyymmdd')from dual; 运行输出结果为:
select request_at "Day",round(avg(`status`!
substr(to_date('20191221','yyyy-MM-dd'),0,11 )from dual结果是这样的:图片于是我换了种写法:先把字符串转化为日期,然后再转为格式化的字符串select to_char
3.用于处理日期和时间值并从这些值中提取特定成分(例如,返回两个日期之差,检查日期有效性等)的日期和时间函数。 4.返回DBMS正使用的特殊信息(如返回用户登录信息,检查版本细节)的系统函数。...虽然其他的日期格式可能也行,但这是首选的日期格式,因为它排除了多义性(如,04/05/06是2006年5月4日或2006年4月5日或2004年5月6日或…… 对比不使用时间函数和使用使用MySQL的时间函数效果...(与普通的函数最主要的区别聚集函数值返回一条结果,这当然是使用分组语句的情况下) 当我们只需要汇总数据而不用把它们实际数据检索出来时,可以使用聚集函数.在只需要返回汇总数据时,返回实际表数据是对时间和处理资源的一种浪费...这些函数是高效设计的,它们返回结果一般比你在自己的客户机应用程序中计算要快得多. 2.聚集函数的可移植性不强,取决于不同的数据库厂商和不同的版本. ①AVG()函数用法: 只用于单个列 AVG()只能用来确定特定数值列的平均值...为了获得多个列的平均值,必须使用多个AVG()函数。 关于空值: NULL值 AVG()函数忽略列值为NULL的行。
:avg(字段名) 返回平均值 sum:sum(字段名) 返回字段的和 count:count --count(*),用来查询表中有多少条记录 --count..., select to_char(123) from dual--将数字转换为字符类型,使用to_char(number) select sal, to_char(sal) from...emp number-->char 使用指定的格式 to_char(number,'格式'),格式: $代表美元符,9代码数字占位。...(hiredate) from emp--日期转换为字符的时候,不指定格式使用默认格式:dd-mm-yyyy select hiredate,to_char(hiredate,'yyyy-mm-dd...') from emp;--使用指定格式将日期转换为字符串类型 select hiredate,to_char(hiredate,'yyyy/mm/dd') from emp;--使用指定格式将日期转换为字符串类型
表空间碎片这玩意一时半会讲不清, 查询表空间碎片语句如下(这样的SQL,网上很多的): select a.owner, a.table_name, a.num_rows, a.avg_row_len..., round(a.avg_row_len * a.num_rows / 1024 / 1024, 2) real_bytes_MB, round(b.seg_bytes_mb, 2) seg_bytes_mb..., decode(a.num_rows, 0, 100, (1 - round(a.avg_row_len * a.num_rows / 1024 / 1024 / b.seg_bytes_mb...但是开发的说可能会使用.... 那就迁移表吧, 在线迁移还是锁表迁移? 在线迁移不锁表, 但是巨慢无比(迁1T左右大概20+小时), 锁表迁移好一点, 反正也没得人使用....degree => 4,granularity => 'AUTO',cascade > TRUE); 也可以用脚本(有需要的可以联系我) image.png 后面再迁移了这个表空间的一些大表, 和开发的约定每个用户一个表空间
grant 2-way 4,412,873 2,792 1 8.4 Cluster 看到这里,因为所有INSTANCE的待机EVENT都和I...经过简单的分析,我们可以知道通过 sqlplus 和 JDBC Thin Client 连上来的SESSION数量最大,并且增长幅度最大。...count(*)>10 order by to_char(sample_time,'yyyy/mm/dd hh24:mi'); TO_CHAR(SAMPLE_TIME,'YYYY/MM/DDHH24...mm/dd hh24:mi') having count(*)>10 order by to_char(sample_time,'yyyy/mm/dd hh24:mi'); 6 7 TO_CHAR(SAMPLE_TIME...到现在为止,基本上可以判定为11:18左右,通过 sqlplus 和 JDBC Thin Client 连上来的SESSION数过于集中, 引起了I/O处理过多,导致了这次问题的发生。
第1章 课程概述 1-1 Oracle高级查询课程概述 (05:14) 第2章 分组查询 本章介绍分组函数的概念和应用,以及GROUP BY子句和HAVING子句的使用。 ...(08:47) 2-6 [Oracle] group by子句的使用 (09:13) 2-7 [Oracle] having子句的使用以及和where的区别 (07:51) 2-8 [Oracle...(05:46) 4-6 [Oracle] 不可以使用子查询的位置 (01:20) 4-7 [Oracle] from后面的子查询 (03:05) 4-8 [Oracle] 主查询和子查询不是同一张表...avg_sal from emp e where e.sal > (select avg(sal) from emp where deptno=e.deptno); 9、单行子查询只能使用单行操作符...3、按入职时间统计员工人数,按格式输出 使用函数的方式: select count(*) total,sum(decode(to_char(hiredate,’yyyy’),’1980’,1,0
: 查询的数据来源为多个表 */ --查询员工信息和员工的部门信息 select * from emp; select * from dept; --使用关联条件 过滤无效数据 select...select * from emp e, (select deptno, avg(sal) d_a from emp group by deptno) d_avg where e.sal...> d_avg.d_a and e.deptno = d_avg.deptno --统计每年入职的员工个数 select to_char(hiredate,'yyyy') hire_year...,count(*) hire_count from emp group by to_char(hiredate,'yyyy') ) t --使用sum对hire_count做求和运算补上total...') --使用集合实现 select * from emp where '1981' = to_char(hiredate,'yyyy') minus select * from
可以看到该数据库有是单实例,有3个日志组,每个组有2个成员日志文件 ---- log file sync(LFS)和log file parallel write(LFPW)对比 通过上面的定义我们知道...LFS和LFPW都是等待LGWR进程完成I/O操作 LFS是用户进程等待LGWR进程完成I/O操作 LFPW是LGWR进程本身等待其I/O操作完成 例如有五个用户进程同时commit,每个完成耗时都是...--- 原因及改善 如果log file sync 等待事件占有过多的CPU时间,我们就需要注意了 低速的磁盘可能会导致LGWR进程写文件较慢从而导致log file sync等待,我们可以简单的通过avg...的调优可关注后续内容 过多的commit操作,通过上面我们知道每次commit操作都会导致LGWR写操作,如commit过多则该等待则会明显的上升 ---- 查看日志切换频率 直接将如下代码执行(PLSQL请使用...999 column h20 format 999 column h21 format 999 column h22 format 999 column h23 format 999 column avg
第九课: Group function 组函数(5个函数必记) max,min,avg ,count,sum函数 select to_char(avg(sal),... 则deptno和job均相同的记录在同一组,从这一组中选出薪水最大的显示部门编号deptno和工作岗位job select deptno,job,max(sal) from emp...empno编号和MGR都是编号....select ename,dname from emp join dept using(deptno);等同上句,但不推荐使用. ...对应的表和另外一张表做连接。
, chain_cnt, avg_row_len, global_stats, user_stats, sample_size, to_char(last_analyzed,'yyyy-mm-dd hh24..., chain_cnt, avg_row_len, global_stats, user_stats, sample_size, to_char(last_analyzed,'yyyy-mm-dd hh24..., chain_cnt, avg_row_len, global_stats, user_stats, sample_size, to_char(last_analyzed,'yyyy-mm-dd hh24..., AVG_DATA_BLOCKS_PER_KEY, CLUSTERING_FACTOR, GLOBAL_STATS, USER_STATS, SAMPLE_SIZE, to_char(t.last_analyzed..., t.AVG_DATA_BLOCKS_PER_KEY, t.CLUSTERING_FACTOR, t.GLOBAL_STATS, t.USER_STATS, t.SAMPLE_SIZE, to_char
– 实现重复数据只输出第一个和最后一个的需求 相邻类分析函数 – LAG和LEAD用于获取相邻行的数据,以便于进行相关计算 – LAG 是取到排序后当前记录之前的记录 – LEAD... – XX货物每月的最高和最低销售额对应的部门 – 获取相邻行内最近的一个非空值 – …… 相关统计分析函数 – SUM – AVG – MAX/MIN – FIRST_VALUE...(goods_sale_cnt)over(partition by goods_type),2) avg_goods_sale_cnt ,goods_sale_cnt-round(AVG(goods_sale_cnt..., avg_goods_sale_cnt, goods_sale_cnt-avg_goods_sale_cnt dv_goods_sale_cnt from t a, t1 b where a.goods_type...用于获取一组有序的数据中的第一个和最后一个值,和 MAX/MIN以及FIRST/LAST函数很像,但要注意区别 – COUNT也可以作为分析函数,这和SUM/MAX等差不多,另外一个函数叫 RATIO_TO_REPORT
SELECT TO_CHAR(SYSDATE,'yyyy-mm-dd hh24:mi:ss') FROM dual ; 范例:拆分日期数据 SELECT TO_CHAR(SYSDATE,'yyyy')...year , TO_CHAR(SYSDATE,'mm') months , TO_CHAR(SYSDATE,'dd') day FROM dual ; 范例:格式化数字显示SELECT TOCHAR(...这些函数能在select或select的having子句中使用,当用于select子串时常常都和GROUP BY一起使用。多行函数分为接收多个输入,返回一个输出。...(sal) 方式二 from emp; --关于空值:组函数会自动滤空 select count(*), count(comm) from emp; --max和min:求最高工资和最低工资... select max(sal) 最高工资,min(sal) 最低工资 from emp; --分组数据:求各个部门的平均工资 select deptno,avg(sal) from emp
999 column h20 format 999 column h21 format 999 column h22 format 999 column h23 format 999 column avg...", COUNT (1) "Total", SUM (DECODE (TO_CHAR (first_time, 'hh24'), '00', 1, 0)) h0, SUM (DECODE (TO_CHAR...", SUM (DECODE (TO_CHAR (first_time, 'hh24'), '13', 1, 0)) "h13", SUM (DECODE (TO_CHAR (first_time, '...(TO_CHAR (first_time, 'hh24'), '16', 1, 0)) "h16", SUM (DECODE (TO_CHAR (first_time, 'hh24'), '17',...) "Avg" FROM gv$log_history WHERE first_time >= trunc(SYSDATE) - 68 and thread# = inst_id GROUP BY TRUNC
函数一般是在数据上执行的,它给数据的转换和处理提供了方便。只是将取出的数据进行处理,不会改变数据库中的值。...函数根据处理的数据分为单行函数和聚合函数(组函数),组函数又被称作聚合函数,用于对多行数据进行操作,并返回一个单一的结果,组函数仅可用于选择列表或查询的having子句;单行函数对单个数值进行操作,并返回一个值...1 -- 把数值格式化成字符串 2 select to_char(12345,'99999.99') from dual; 3 select to_char(12345,'99,999.99') from...dual; 4 -- 没有数的位置补空格 5 select to_char(12345,'999,999.99') from dual; 6 -- 没有数的位置补0 7 select to_char(...7.3 having (重点) 如果需要对分组后的数据进行条件过滤,必须使用having。
* from t2 where cpu_stddev < 15 and cpu - avg_cpu > 20 order by cpu - avg_cpu desc; c....生成7天对比图,使用pivot函数将每天每小时的SQL使用率作图。...with t as (select to_char(exectime,'yyyy-mm-dd')day,to_char(exectime,'hh24') hour,hostname,round(avg(...(3)ORDER BY子句 分析函数中ORDER BY的存在将添加一个默认的开窗子句,这意味着计算中所使用的行的集合是当前分区中当前行和前面所有行,没有ORDER BY时,默认的窗口是全部的分区。...Oracle将 ^ 和 $ 分别解释为源字符串中任何位置的任何行的开始和结束,而不仅仅是整个源字符串的开始或结束。
):求平均值 5).count(obj):计数 【注意事项】: 1).max()和min()两个函数可以接受任何数据类型的实际参数 2).sum()和avg()两个函数只能接受number类型的数据...),max(hire_date),min(last_name),min(hire_date) from employees; 关于count()的使用: 需求如下: 查询公司有多少员工?...commission_pct) / 107, sum(commission_pct) / count(*) from employees; 作业: --1.显示系统时间(注:日期+时间) select to_char...but wants $' || 3 * salary "Dream Salary" from employees; --方式二: select last_name || ' earns' || to_char...(salary,'$99999') || ' monthly but wants' || to_char(3 * salary,'$99999') "Dream Salary" from employees
SQLSTATS WHERE disk_reads> 1000 and executions0 ORDER BY disk_reads DESC) WHERE rownum <=20; 5、按使用内存降序排列...)/SUM(executions)/1e6, 3) avg_io_secs, ROUND(SUM(buffer_gets)/SUM(executions)) avg_buffer_gets...)) avg_buffer_gets, ROUND(SUM(disk_reads_total)/SUM(executions_total)) avg_disk_reads,..., partitioned, to_char(last_analyzed,'yyyymmdd hh24:mi:ss') as analyzed , num_rows...format a12 col analyzed format a18 select owner, index_name,index_type,uniqueness,num_rows, to_char
普通的 select…from 很明显不能满足我们的更细化的查询需求,它除了基本语法外,还可以拓展使用一些判断语法和过滤、分组语法。本文介绍一些 select 的进阶查询语法。...order by(排序没有太大意义)Top-N必须使用 order by 9、单行子查询只能使用单行操作符,多行子查询只能使用多行操作符 10、子查询中null值 单行子查询案例: select * from...select empno, ename, sal, ( select avg(sal) from emp where deptno=e.deptno ) avgsal from emp e where...(decode(to_char(hiredate, ‘yyyy’), ‘1980’, 1, 0)) as “1980”, sum(decode(to_char(hiredate, ‘yyyy’),...decode(to_char(hiredate, ‘yyyy’), ‘1987’, 1, 0)) as “1987” from emp