oracle sql学习

一、sql函数:
1、单行函数:
[color=brown]字符函数[/color](upper、lower、concat、substr(s,c1,c2)...);
[color=brown]数值函数[/color](abs(x)、round(x,y)、mod(x,y),sqrt(x)...);
[color=brown]日期函数[/color](months_between(d1,d2)、add_months(d,t)、last_day(d)...);
[color=brown]数据转换函数[/color](to_char(x,['frm'])、to_date()...);
[color=brown]decode函数[/color]:

sql>select job,sal,decode(job,'维修工程师',sal*1.1,
'软件工程师',sal*1.2,sal) 加薪后的工资 from emp;


[color=brown]nvl函数[/color]:
    nvl(comm,0)//如果数值comm值为空,则转换为0。

2、分组函数
count:
[list]
[*]count(*)//统计表中所有行的行数。如果表很大不要用。
[*]count(列名)//统计表中指定列为非null值的行数。*建议使用
[*]count(distinct 列名)//统计表中指定列名[color=red]除去重复值[/color]的行数。
[/list]
max(distinct/all 列名)//返回作为参数给出的列中最大值。
min(distinct/all 列名)//返回作为参数给出的列中最小值。
avg(distinct/all 列名)//返回作为参数给出的列中平均值。
sum(distinct/all 列名)//累加值并返回总和。
[color=red]注:分组函数会忽略值为null的记录。[/color]

-----------例子--------
select sum(num),count(num) from table_name;

1、sum()方法是用来求num这列的累加和的;
count()方法是求num不为空的总行数(也就是如果num这列有空值(null)不在统计范围之内)。如果想让其统计则用:

select count(nvl(num,0)) from table_name;//结果为记录的总行数,发现nvl(num,这里什么都行);
select count(nvl(num,null)) from table_name;//结果与count(num)是一样的。

[quote]sum:[color=red]累加[/color];count:[color=red]累计[/color]。[/quote]
2、nvl();
select nvl(sum(num),0), nvl(count(num),0) from table_name;//如果统计出来的结果为null则让其显示0

3、group by 的作用
t_income表数据如下:
时间(in_date) 收入(money)
2010-06-08 10000
2010-06-09 20000
2010-06-08 30000
2010-06-09 40000
想让其展示如下:
2010-06-08 40000
2010-06-09 60000
sql语句如下:

select in_date,sum(money) from t_income group by in_date;
select in_date,sum(money) from t_income group by in_date having in_date='2010-06-08'//只显示时间为2010-06-08的总收入
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值