http://tw.knowledge.yahoo.com/question/question?qid=1010050304974

 

抓最大最小其實是很簡單的,用簡單的min / max加上group by就可以

Select 姓名,MAX(日期) from table GROUP BY 姓名
Select 姓名,MIN(日期) from table GROUP BY 姓名

至於隨機,Oracle有一個隨機抓到第一筆的function叫做First_Value

他會回傳找到的第一筆

不過用法稍微比較複雜,你可能得去研究一下analytic function的語法

我給你的語法如下,你把中文改回你的table column name應該是可以執行的

select distinct 姓名,first_value(日期) over (partition by 姓名)
 
from table


其中後面over (partition by 姓名) 是表示針對每個Name抓取第一筆資料,資料本身不排序,所以等於是隨機抓一筆

變形一下,也可以做到跟max/min group by 一樣的結果

select distinct 姓名,first_value(日期) over (partition by 姓名 order by 日期 )
from table

等於抓最小 Select 姓名,MIN(日期) from table GROUP BY 姓名
因為在後面有家上Order by 日期,所以會抓取每個Name的最小那筆

同理

select distinct 姓名,first_value(日期) over (partition by 姓名 order by 日期  desc ) from table

等於抓最大 Select 姓名,MAX(日期) from table GROUP BY 姓名


稍微有點複雜,如果看不懂,這可能你得去看一下書了

arrow
arrow
    全站熱搜

    司馬庫斯 發表在 痞客邦 留言(0) 人氣()