集合運算 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 

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