一、sql函数:
1、单行函数:
字符函数(upper、lower、concat、substr(s,c1,c2)...);
数值函数(abs(x)、round(x,y)、mod(x,y),sqrt(x)...);
日期函数(months_between(d1,d2)、add_months(d,t)、last_day(d)...);
数据转换函数(to_char(x,['frm'])、to_date()...);
decode函数:
sql>select job,sal,decode(job,'维修工程师',sal*1.1,
'软件工程师',sal*1.2,sal) 加薪后的工资 from emp;
nvl函数:
nvl(comm,0)//如果数值comm值为空,则转换为0。
2、分组函数
count:
- count(*)//统计表中所有行的行数。如果表很大不要用。
- count(列名)//统计表中指定列为非null值的行数。*建议使用
- count(distinct 列名)//统计表中指定列名除去重复值的行数。
max(distinct/all 列名)//返回作为参数给出的列中最大值。
min(distinct/all 列名)//返回作为参数给出的列中最小值。
avg(distinct/all 列名)//返回作为参数给出的列中平均值。
sum(distinct/all 列名)//累加值并返回总和。
注:分组函数会忽略值为null的记录。
-----------例子--------
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)是一样的。
引用
sum:
累加;count:
累计。
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的总收入