首頁  >  文章  >  資料庫  >  sql 相鄰2筆記錄時間差比較

sql 相鄰2筆記錄時間差比較

jacklove
jacklove原創
2018-06-14 16:14:064687瀏覽

 下午看到項目有統計報表的生成,其中XX表中記錄相鄰2筆記錄統計時間差即

   表中資料如下:


 要求鄰近2筆記錄如第1條和第2筆記錄創建時間差統計出來

  即

          zhouhui            zhouhui           

          dingxiang     24秒

 

為需求出來了需要解決,後來找到解決方法了

1:#qq

Sll代碼 

sql 相鄰2筆記錄時間差比較

  1. ##select t.username,(max( t.CREATIONDATE)-min( t.CREATIONDATE))*24*60*60,count(t.username)/2  

  2. ##  
  3. from

     ofloginlog t  

  4.  
  5. --where USERNAME = 'zhouhui'

      

  6.  
  7. group

     by t.username  

       以分組統計出使用者線上時間(即前後2筆記錄作差)
   效果圖: 

#說明最後一個欄位我是用來統計使用者登入次數所使用的。

       oracle 兩個時間相減預設的是天數

       oracle 兩個時間相減預設的是天數*24 為相差的小時數# 減預設的是天數*24*60 為相差的分鐘數

       oracle 兩個時間相減預設的是天數*24*60*60 為相差的秒數

方法2:

Sql程式碼  

sql 相鄰2筆記錄時間差比較

#select
     username, 
  1. sum

    (b), count (username) / 2     

    from
  2.  (
  3. select

     id, username, ( ATIONDATE -CREtime) * 24 * 60 * 60 as b  #

  4.            from (select t.*,  ##1   lag (type) over(partition by

     username 
  5. order
  6.  

    by CREATIONDATE) lgtype,  

sql 相鄰2筆記錄時間差比較

  1. lag(CREATIONDATE) over(partition by username order by

     CREATIONDATE) lgtime  
  2. ## from ofloginlog t))   

    -- where USERNAME = 'zhouhui')
  3.   
  4.   

    group
  5.  
  6. by

    # username  

       實現效果一樣這裡不貼了
  7.    又複習了一下基本的SQL 了呵呵

    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  #######################################################################################
  8.           group by t.username) g,  

  9. (select t.username, count(t.username) as count#  

  10. ##           #from ofloginlog t  

  11.       #          group 

    #by
  12.  t.username) h  

##by###

##  
where g.username = h.us​​ername  

  

forder 

  orderorder
 

### by### ###count### ###desc###  ###############   查詢結果#######    ##################    ###################    ###########分析時間差是2個集合之間的差,而後面統計個數只是單獨限制條件是TYPE=0的記錄數,統計的數據數量就不一致,所以很難一個分組實現,思路是先實現USERNAME 和TIME的記錄在統計USERNAME和滿足TYPE=0的記錄個數將2個結果合併通過  SELECT  XX  FROM   A  B 2個臨時表的內聯關係實現合併結果集合######本文講解了sql 相鄰2筆記錄時間差比較,更多相關內容請關注php中文網。 ######相關推薦:#########.net2.0連接Mysql5資料庫設定###############cookie 與session 的差異詳解### ######

以上是sql 相鄰2筆記錄時間差比較的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn