例子25: 先工资降序,再按提成升序显示员工?
Select id,first_name,salary ,commission_pct from s_emp
Order by salary desc , 4 asc
例子26: 按年薪降序显示员工?
Select id,first_name,salary*12 from s_emp Order by salary*12 desc
注意: order by 后可以使用字段名、表达式、位置、别名
十二、
SQL函数
单值函数 --- 单值函数 字符相关函数: lower 转成小写 upper 转成大写
多值 函数 initcap 首字母大写,其它小写 concat 字符串拼接 substr 求子串
length 返回字符串的长度 from dual
select substr(‘hello world!’, -2,3 )from dual 例子24:列出每个员工名字的最后两个字符?
Select id,last_name ,substr(last_name,-2,2) from
s_emp
Select id,first_name,to_char(salary,’99,999,999.99’) from s_emp
数值类型函数
ROUND 四舍五入 round TRUNC 截取 trunc
例子25:
ROUND (45.923, 2) → 45.92 ROUND (45.923, 0) → 46 ROUND (45.923, -1) → 50 TRUNC (45.923, 2) → 45.92 TRUNC (45.923) → 45 TRUNC (45.923, -1) → 40 日期类型函数
--- Oracle默认的两种日期格式:'DD-MON-YY' 和 'DD-MON-RR'
--- 日期是格式敏感的。 --- 命令:
alter
session
set
nls_date_format='yyyy-mm-dd hh24:mi:ss'; 例子26:
insert into test values('23-AUG-10');
insert into test values(to_date('2010 08 23 10:10:10',
'yyyy mm dd hh24:mi:ss'));
insert into test values('2010-08-23');
例子27:按照'yyyy mm dd hh24:mi:ss'的格式,输出42部门员工的入职时间? ---处理字符串的函数:
fm: 去掉空格和前导0。 rtrim(); ltrim(); trim();
例子28:列出5月份入职的员工(first_name,start_date)?
注意:请使用多种实现方式。 --- 两位年和四位年的标识法的区别
--- 日期运算:(单位:天)
Select sysdate-1, sysdate, sysdate+1 from dual;
例子29:求10分钟之后的日期时间?
1天=24小时 1小时= 1/24天 1小时=60分钟 10分钟=1/6小时 10分钟 :1/24 * 1/6 天
select sysdate+ 1/144 from dual; --- 日期函数: ROUND TRUNC
MONTHS_BETWEEN ADD_MONTHS NEXT_DAY LAST_DAY 例子31: Select
sysdate,sysdate+1,sysdate+1/(24*60),sysdate+1/(24*60*60) select
add_months(trunc(sysdate,'year'),12)-trunc(sysdate,'year') from dual计算一年的天数 今天是一年的第几天
Select to_char(sysdate,’DDD’) from dual;
求今年的第Sysdate = '25-MAY-95' 几天 ROUND(sysdate,'MONTH') ROUND(sysdate,'YEAR') TRUNC(sysdate,'MONTH') TRUNC(sysdate,'YEAR')
01-JUN-95 01-JAN-95
01-MAY-95
01-JAN-95
Sysdate = '2010 08 23 06:30:34'
TRUNC(sysdate,‘DAY') 2010 08 22 00:00:00 TRUNC(sysdate,‘DD') 2010 08 23 00:00:00 MONTHS_BETWEEN(‘01-SEP-95’,‘11-JAN-94’) 19.774194
ADD_MONTHS('11-JAN-94',6) NEXT_DAY('01-SEP-95','FRIDAY')
'11-JUL-94' '08-SEP-95'
LAST_DAY('01-SEP-95') '30-SEP-95' ※ ※
求五月份入职的员工名单
select id,first_name,start_date from s_emp