oracle之sql试题
方法一:使用函数的方式
select count(*) Total,
sum(decode(to_char(hiredate,'yyyy'),'1980',1,0)) ''1980'',
sum(decode(to_char(hiredate,'yyyy'),'1982',1,0)) ''1982'',
sum(decode(to_char(hiredate,'yyyy'),'1981',1,0)) ''1981'',
sum(decode(to_char(hiredate,'yyyy'),'1987',1,0)) ''1987'',
from emp;
DECODE的语法:
DECODE(value,if1,then1,if2,then2,if3,then3,...,else),表示如果value 等于if1时,DECODE函数的结果返回then1,...,如果不等于任何一个if值,则返回else
oracle 中to_char函数的用法
一、日期格式转换
to_char(date,'格式');
二、数字格式转换
to_char(number,'格式');
三、金钱格式转换
to_char(salary,'$99,99');
方法二:使用子查询的方式
select
(select count(* ) from emp) Totall,
(select count(* ) from emp where to_char(hiredate,'yyyy')='1980') "1980",
(select count(* ) from emp where to_char(hiredate,'yyyy')='1981') "1981",
(select count(* ) from emp where to_char(hiredate,'yyyy')='1982') "1982",
(select count(* ) from emp where to_char(hiredate,'yyyy')='1987') "1987",
from dual
dual 表
DUAL是Oracle与数据字典一起自动创建的一个表。它只有一列:DUMMY,其数据类型为:VARCHAR2(1)。DUAL中只有一行数据:'X'。DUAL属于SYS模式,但所有用户都可以使用DUAL名称访问它。用SELECT计算常量表达式、伪列等值时常用该表,因为它只返回一行数据,而使用其它表时可能返回多个数据行。
dual是一个oracle内部表,不论我们做什么操作(不要删除记录)它都只有一条记录,上面插入了一条之后,他仍然只有1条记录,所以很多取系统时间,计算,等只要选择一条记录,而且记录内容与表内容无关的操作,我们都喜欢使用这个表。虚表(dual)是oracle提供的最小的工作表,它仅包含一行一列。对于虚表(dual)来说,其中的列往往是不相关的或无关紧要的。