O
今天在新的任务开始之前,复习上周任务里面三个让我记忆深刻的知识点,分别是:select into、group by、decode函数。
R
其实今天上班发生了很多事情,心态有点炸,现在学习了一会儿感觉心情平复了很多。
I
这三个知识点的介绍及具体使用方法如下:
1.select into
select into语句常用于进行表的备份复件或者用于对表中的部分记录进行存档。其具体语法如下:
复制(插入)所有列:
select * into new_table_name from old_table_name
复制(插入)部分列:
select column_name(s) into new_table_name from old_table_name
select into语句要求目标表 new_table_name不存在,因为在插入时会自动创建表new_table_name,并将old_table_name中指定字段数据复制到new_table_name中。
2.group by
group by语句常用于将查询对象按一定条件分组。它的作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对若干个小区域进行数据处理。其具体语法如下:
select column, group_function,... from table [where condition] group by group_by_expression [having group_condition]
在Oracle中,group by必须用于查询分组字段或分组字段构成的表达式或聚集函数。而在具体应用中,我被一个bug困扰了很久,后来经过导师指点才知道,group by 有一个原则,就是 select 后面的所有列中,没有使用聚合函数的列,必须出现在 group by 后面。例如如下语句,如果group by后面只有to_char(new_date,''yyyymm'')则程序出错。
select to_char(new_date,''yyyymm''), a.product_id,b.level4_name,count(1),sum(charge_2809) from liang_1025_201712 a, dim_product_8 b where a.product_id=b.product_id group by to_char(new_date,''yyyymm''),a.product_id,b.level4_name
3.decode
decode是Oracle所独家提供的函数,其两种用法的具体语法分别如下:
decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值)
这个函数表示,if 条件=值1 then return (值1)
elsif 条件=值2 then return (值2)
......
elsif 条件=值n then return (值n)
else return (缺省值)
end if
decode(字段或字段的运算,值1,值2,值3)
这个函数表示,当字段或字段的运算的值等于值1时,该函数返回值2,否则返回值3。同理,值1,值2,值3也可以是表达式。
D
继续记录工作中的重难点问题,尽量让问题不要隔夜,及时消化。