oracle sql学习

一、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的总收入

你可能感兴趣的:(oracle,sql)