集合运算 rownum decode case

select from where group by having order by;

1、查询的集合运算:union all (对两个结果集进行并集操作,包括重复行,不进行排序)

                            union(对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序)    

                                  intersect  交集                minus差集

    select distinct deptno from emp;    10,20,30
    select deptno from dept; 10,20,30,40

    select deptno from dept union select hiredate from emp;  不可以(两个结果集类型不同)
    select deptno from emp union select deptno from dept order by deptno desc;

2、查询表的特定记录。伪列 rownum: 给查询结果进行编号,从1开始,当其出现在where从句时,其值总是从1开始。

   查询表的第2条记录: 
        select * from emp where rownum<=2 minus select * from emp where rownum=1;
   查询第3-5条记录:    rownum<=5 minus rownum<=2

3、查询中实现if else功能
     grade A B C 优秀  良好  合格  

查询每个员工的工资,若工资超过2000,输出高工资,1000到2000之间,输出中等工资,否则输出低工资。

   select ename,sal,case when sal>2000 then '高工资' when sal between 1000 and 2000 then '中等工资' else '低工资' end as 工资描述 from emp;

(1)decode(a,b,c,d)     decode(a,b,c,d,e,f,g,h)

         decode(grade,'A','优秀','B','良好','合格') 

(2) case表达式:   简单case :   case 属性名 when value1 then return1
                                            when value2 then return2
                                            ...
                                            else return n 
                                   end

                                   case grade when 'A' then ‘优秀'
                                          when 'B' then '良好'
                                          else '合格'
                                  end

搜索case: case when 条件表达式1 then return1
                                       when 条件表达式2then return2
                                       ...
                                       else  return n
                                  end 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章