oracle學習總結(三)

一.組函數
1.常用的組函數
count(),avg(),max(),min(),sum()
2.sql中分組語句
group by
注意:where 後面不能出現組函數。
但可以間接使用
select id,last_name,salary from s_emp where salary<(select avg(salary) from s_emp);
如果要使用組函數條件限定,條件應該寫在having的後面。
1)select 如果使用了組函數,那麼沒有使用組
函數的列需要放入到group by子句中
2)select 如果使用了組函數,那麼沒有使用組
函數的列需要放入到group by子句中
3)group by 可以涉及到多級分組,即
group by後指定多列
group by dept_id,title :求統一部門裏統一職位的工資
4) having 子句中不能使用別名
目前爲止select 語句的關鍵字順序應該爲
select..
from..
where…
group by…
having…
order by…
二. 子查詢
1.查詢裏面嵌套查詢
在執行數據操作的過程中,如果某個數據需要依賴於另外一個select語句查詢出的結果,那麼就可以把select語句嵌入到該操作中,這樣就形成了一個子查詢
位置:在增刪改查命令中允許使用一個表達式的地方,都可以包含子查詢
*****i 單行子查詢 是指子查詢語句只返回一條結果
ii 多行子查詢 子查詢語句返回多行數據*
1.1 在where條件中使用子查詢,必須使用in any all
a>in
對所有子查詢結果進行一一匹配可以看做是一個比較運算符
b> any
不能看做是一個比較運算符
必須結合單行運算符進行使用 = > < >= <=
主查詢只要匹配任意子查詢結果即可

any() 大於子查詢結果的最小值

<any()  小於子查詢結果的最大值
 c> all  
不能看做是一個比較運算符
必須結合單行運算符進行使用 = > < >= <= >all() 大於最大<all() 小於最小值

2.子查詢可以用在from後面
充當一個表 (這種做法一般比較容易忽略。)
這裏寫圖片描述
如:查詢每一個部門的員工小於該部門的平均工資的員工的信息?
select last_name,salary
from s_emp,(
select avg(salary) avg,dept_id
from s_emp
group by dept_id
) a where s_emp.dept_id=a.dept_id and salary

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