對於oracle中count,max,min,sum,avg以及NVL函式我是這樣理解的
1、Count
用來計算有效資料的數量
例如,對於Scott的Schema中有表Emp;
Select Count(*) From Emp;
將會得到結果:COUNT(*)———-14
2、Min
返回一個數字列或計算列的最小值
Select gi.ID,
gi.game_instance_name,
gi.draw_no,
gi.draw_date,
count(*) ticketNumber, ---用來計算有效資料的數量
Nvl(min(tt.total_bets), 0) totalEntry,--用來計算給定欄位的最小值,如果為NULL就用0代替
Nvl(min(tt.total_amount), 0) TotalTurnover----用來計算給定欄位的最小值,如果為NULL就用0代替
From Te_bg_ticket tt, BG_GAME_INSTANCE gi, Game g
Where tt.BG_GAME_INSTANCE_ID=gi.ID
And gi.game_id=g.game_id
And gi.status=1
And tt.ticket_type=1
And tt.is_count_in_pool=1
And g.game_id='4028822f483fd59401483fe62dc4000d'
And g.game_type_id=6
Groupby gi.ID, gi.game_instance_name, gi.draw_no, gi.draw_date
Havingcount(*) > 0
Orderby gi.draw_no
3、Max
返回一個數字列或計算列的最大值
和最小值用法一樣。
4、Sum
返回一個數字列或計算列總和
Select gi.ID,
gi.game_instance_name,
gi.draw_no,
gi.draw_date,
Count(*) ticketNumber, ---用來計算有效資料的數量
Nvl(sum(tt.total_bets), 0) totalEntry,--用來計算給定欄位的總和,如果為NULL就用0代替
Nvl(sum(tt.total_amount), 0) TotalTurnover----用來計算給定欄位的總和,如果為NULL就用0代替
From Te_bg_ticket tt, BG_GAME_INSTANCE gi, Game g
Where tt.BG_GAME_INSTANCE_ID=gi.ID
And gi.game_id=g.game_id
And gi.status=1
And tt.ticket_type=1
And tt.is_count_in_pool=1
And g.game_type_id=6
Groupby gi.ID, gi.game_instance_name, gi.draw_no, gi.draw_date
Havingcount(*) > 0
Orderby gi.draw_no
5、Avg
返回一個數字列或計算列的平均值
用法和Max,Min,Sum一樣。
6、NVL(expr1,expr2) 如果Oracle第一個引數為空那麼顯示第二個引數的值,如果第一個引數的值不為空,則顯示第一個引數本來的值。
Select
Nvl(sum(tt.total_bets), 0) totalEntry,--用來計算給定欄位的總和,如果為NULL就用0代替
Nvl(sum(tt.total_amount), 0) TotalTurnover----用來計算給定欄位的總和,如果為NULL就用0代替
From te_bg_ticket tt, BG_GAME_INSTANCE gi, Game g
where tt.BG_GAME_INSTANCE_ID=gi.ID
And gi.game_id=g.game_id
And gi.status=1
And tt.ticket_type=1
And tt.is_count_in_pool=1
And g.game_type_id=6