select a.ename,a.conn from emp a where a.conn < (select b.conn from emp b where b.ename = 'allen') ;
select a.ename,a.conn from emp a where coalesce(a.conn,0) < (select b.conn from emp b from b.ename = 'allen');
null值比較結果還是null,所以這裡需要進行null值的乙個轉化才行
select e.deptno,
sum(e.sal) as total_sal,
sum(e.sal*eb2.rount) as total_bonus,
from emp
left join (select eb.empno,
sum(case when type =1 then 0.1
when type =2 then 0.2
when type =3 then 0.3 end ) as tote
from emp_bonux eb
group by eb.empno) eb2 on eb2.empno = e.deptno
group by e.deptno
oder by 1;
select e.deptno
e.empno,
e.ename,
(e.sal * case when type =1 then 0.1
when type =2 then 0.2
when type =3 then 0.3 end ) as bonus
from emp e
inner join emp_bonus eb on eb.empno = eb.empno
where d.deptno = 10
order by 1,2
如果聚合的話必須先把獎金按照員工彙總然後在進行聚集
select e.deptno
sum(e.sal) as total_sal,
sum(e.sal*eb.bonus) as total_bonus
from emp e
inner join (select eb.empno,
case when type =1 then 0.1
when type =1 then 0.2
when type =1 then 0.3 end) as bonus
group by eb.empno) eb2 on eb2.empno = e.empno
where e.deptno = 10;
group by e.deptno;
select ename as 部門名稱 ,denpno 部門編號, evl(mgr,deptno) as 上級編碼
nnion all
select ename as 部門名稱 ,denpno 部門編號, null as 上級編碼 (應該用『』空字串)
74990 30 74990 30
7521 30 7521 30
7654 30 7654 30
7844 30 7844 30
7900 30
這兩條資料坐聚合操作就會出現 or就是有5條資料 而用 union就會只出現一條資料 解決辦法就是加入唯一字段
select empno,deptno from emp where mgr = 7684
union
select empno,deptno from emp where job = 'saleman' 就可以保證正確的去重資料
select disdintc deptno from (
select empno,deptno from emp where mgr = 7684
union all
select empno,deptno from emp where job = 'saleman'
order by deptno;
select e.deptno,e.ename,e.dname,e.loc
from emp e
inner join dept d on (e.deptno = d.deptno)
where e.deptno = 10
select e.empno,e.ename,d.dname,d.loc
from emp e,dept d
e.deptno = d.deptno and e.deptno = 10
(left join) ( right join) (inner join ) ( full join )
自關聯可以採用 left join進行查詢
一頭紮進演算法導論 氣泡排序
定義 交換排序的基本思想是,通過比較兩個記錄鍵值的大小,如果這兩個記錄鍵值的大小出現逆序,則交換這兩個記錄,這樣將鍵值較小的記錄向序列前部移動,鍵值較大的記錄向序列後部移動。假設陣列總長度是n,那麼總共需要重頭開始執行n 1次 過程 用自己的話說 1.先判斷一共執行多少次,假設陣列總長度是n,則一共...
一頭紮進演算法導論 shell排序
過程 原文出自白話shell 以n 10的乙個陣列49,38,65,97,26,13,27,49,55,4為例 第一次 gap 10 2 5 49 3865 9726 1327 495541 a1b2a2b 3a3b 4a4b 5a5b 1a,1b,2a,2b等為分組標記,數字相同的表示在同一組,大...
一頭紮進設計模式 單例模式
定義 單例模式是一種常用的軟體設計模式。在它的核心結構中只包含乙個被稱為單例的特殊類。通過單例模式可以保證系統中乙個類只有乙個例項 用自己的話說 保證全域性只有乙個物件,即不提供公用的構造方法,通過乙個公用的方法返回具體的例項。package com.jjt.singleton author jia...