029-20180129-【数据库学习】select into、group by、decode

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

        继续记录工作中的重难点问题,尽量让问题不要隔夜,及时消化。

你可能感兴趣的:(029-20180129-【数据库学习】select into、group by、decode)