下午看到項目有統計報表的生成,其中XX表中記錄相鄰2筆記錄統計時間差即
表中資料如下:
要求鄰近2筆記錄如第1條和第2筆記錄創建時間差統計出來
即
zhouhui zhouhui
dingxiang 24秒
為需求出來了需要解決,後來找到解決方法了
1:#qq
Sll代碼##select t.username,(max( t.CREATIONDATE)-min( t.CREATIONDATE))*24*60*60,count(t.username)/2
ofloginlog t
by t.username
以分組統計出使用者線上時間(即前後2筆記錄作差)#說明最後一個欄位我是用來統計使用者登入次數所使用的。
oracle 兩個時間相減預設的是天數 oracle 兩個時間相減預設的是天數*24 為相差的小時數# 減預設的是天數*24*60 為相差的分鐘數 oracle 兩個時間相減預設的是天數*24*60*60 為相差的秒數方法2: Sql程式碼 #select(b), count (username) / 2
fromid, username, ( ATIONDATE -CREtime) * 24 * 60 * 60 as b #
from (select t.*, ##1 lag (type) over(partition by
usernameby CREATIONDATE) lgtype,
lag(CREATIONDATE) over(partition by username order by
CREATIONDATE) lgtime## from ofloginlog t))
-- where USERNAME = 'zhouhui')group
# username
實現效果一樣這裡不貼了20100520 需求有些變更要求統計個數不是統計TYPE 1 和0 記錄總和平均值,只統計TYPE=0 的值, 這樣SQL 的分組就不能這樣了,想了一下改進了SQL
Sql程式碼 #####################select## # g.username, g.###time###, h.###count### ################## ###from#### ( ###select### t.username, ################## , floor( ##(t.CREATIONDATE)) * 24 * 60 * 60) ###as### ###time### ########## from### ofloginlog t, ofuser b ################### ,######### 1 =#1 ####where## ##### ###and### t.username = b.username #######################################################################################group by t.username) g,
(select t.username, count(t.username) as count#
## #from ofloginlog t
# group
#by##by###
##
where g.username = h.username
以上是sql 相鄰2筆記錄時間差比較的詳細內容。更多資訊請關注PHP中文網其他相關文章!