日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle 按日输出 取整数,Oracle按日周月分組統計,及next_day()函數詳解

發布時間:2025/4/16 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle 按日输出 取整数,Oracle按日周月分組統計,及next_day()函數詳解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.概述

工作中遇到如下問題:統計周期內關鍵詞數,而這里的周期內最常用的就是日周月。

日月比較容易處理,周的話可以通過next_day()函數實現。

2.實例問題

如下,有一張表ljb_test,包括兩個字段:test_time DATE,city varchar2(4)。

下面我想統計,不同周期范圍內的不同城市的記錄總數。這里的不同周期為日周月。

該問題的核心就是處理日期時間,即如何讓同一周期范圍內的時間返回同一個值,且該值是唯一的。

如下,每個期間將會提供兩種方式,需要指出的是,trunc()函數總是效率高。

2.1按照日統計

--效率高

select trunc(test_time,'DD') time,count(1) ct

from ljb_test

group by trunc(test_time,'DD')

order by time;

或者

select to_char(test_time,'YYYYMMDD') time,count(1) ct

from ljb_test

group by to_char(test_time,'YYYYMMDD')

order by time;

以此類推按照小時統計,把時間處理為

trunc(test_time,’HH24’)

或者

to_char(test_time,’YYYYMMDD HH24’)

2.2按照周統計

按照周統計問題的核心,就是如何讓同一周的時間返回同一值。

Oracle提供了一個函數next_day()

next_day(date,n):計算date時間后下一個星期幾的時間。n可以傳遞字符串,如’星期一’,’monday’。還可以傳遞數值,1代表周日。

因為語言問題,這里推薦使用數字試下。

有這個函數,就可以實現了。

只需要對日期做如下處理:

trunc(next_day(test_time-7,2),’DD’)

其實trunc()函數可以直接實現返回周一。

trunc(test_time,’iw’)

之所以介紹next_day()函數,如果我們傳入的日期字段是varchar2類型的,那么兩種方式簡易成都一樣。

如下,把完成的SQL寫出:

--效率高

select trunc(test_time,'iw') time, count(1) ct

from ljb_test

group by trunc(test_time,'iw')

order by time;

或者

select trunc(next_day(test_time-7,2),'DD') time ,count(1) ct

from ljb_test

group by trunc(next_day(test_time-7,2),'DD')

order by time;

2.3按月統計

按月統計和按天統計一樣

--效率高

select trunc(test_time,'MM') time,count(1) ct

from ljb_test

group by trunc(test_time,'MM')

order by time;

或者select to_char(test_time,'YYYYMM') time,count(1) ct

from ljb_test

group by to_char(test_time,'YYYYMM')

order by time;

總結

以上是生活随笔為你收集整理的oracle 按日输出 取整数,Oracle按日周月分組統計,及next_day()函數詳解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。