1.from
2.where
3.group by...sum().. h**ing...
4.select
5.order by
計算兩個date型之間的天數差
注意:結果是前-後,如果想得到正數差,截止時間放前面
計算兩日期時間之間相差的天數,秒數,分鐘數,週數,小時數,這裡主要分享的是通過mysql內建的函式 timestampdiff() 實現。
注意:如果是計算粗略天數,需要先使用date_format將'%y-%m-%d %h:%i:%s'格式的日期轉化為『%y-%m-%d』格式
返回日期或日期時間表示式datetime_expr1 和datetime_expr2the 之間的整數差。其中unit單位有如下幾種,分別是:frac_second (microseconds), second, minute, hour, day, week, month, quarter, year 。該引數具體釋義如下:
frac_second 表示間隔是毫秒
second 秒
minute 分鐘
hour 小時
day 天
week 星期
month 月
quarter 季度
year 年
例如:
#計算兩日期之間相差多少周
select timestampdiff(week,'2011-09-30','2015-05-04');
#計算兩日期之間相差多少天
select timestampdiff(day,'2011-09-30','2015-05-04');
返回加上n個時間單位後的日期,單位可以是month/week/day/hour/minute等等
返回減去n個時間單位後的日期
強制轉換時間為所需要的格式,如:'%y-%m-%d %h:%i:%s'
'%y%m'
'%y/%m'
'%y-%m'
lead(欄位名,n) over () :取值向後偏移n行(空間的理解就是直接將一列資料往前推n個位置,後面的位置就空出來了,具體配合理解);
lag(欄位名,n) over () :取值向前偏移n行(空間的理解就是直接將一列資料往前後n個位置,前面的位置就空出來了,具體配合理解);
lag(欄位名,n,x) over () :取值向前偏移n行,並將空值填充為數字x(空間的理解就是直接將一列資料往前後n個位置,前面的空出來的位置用x填充上,具體配合理解) 。
select id,score,lead(score,2) over(order by id) lead_score,-- score數列向前推動2位,後面就騰空了2個位置
lag(score,2) over(order by id) lag_score, -- score數列向後推2位,騰空2個位置
lag(score,2,666) over(order by id) lag_score_3 -- score數列向後推動2位,空值被填充為666
first_value()是乙個視窗函式,允許您選擇視窗框架,分割槽或結果集的第一行。
first_value(expression) over (
[partition_clause]
[order_clause]
[frame_clause]
)
nth_value()是乙個視窗函式,允許您從有序行集中的第n行獲取值
nth_value()函式返回expression視窗框架第n行的值。如果第n行不存在,則函式返回null。n必須是正整數,例如1,2和3。
可以結合order by 排序來使用
nth_value(expression, n)
from first
over (
partition_clause
order_clause
frame_clause
)
計算分割槽或結果集中行的百分位數排名
percent_rank()函式返回乙個從0到1的數字。
percent_rank()對於分割槽或結果集中的第一行,函式始終返回零。重複的列值將接收相同的percent_rank()值。
對於指定的行,percent_rank()計算行的等級減1,除以評估的分割槽或查詢結果集中的行數減1:
(rank - 1) / (total_rows - 1)
為分割槽或結果集中的每一行分配排名,而排名值沒有間隙。
如果分割槽具有兩個或更多具有相同排名值的行,則將為這些行中的每一行分配相同的排名。
與rank()函式不同,dense_rank()函式始終返回連續的排名值。
為從1開始應用的每一行分配乙個序號,連續且不重複
Hive視窗函式使用
平常使用 hive最多的是聚合函式 但對於某些偏分析的需求 group by很費力 子查詢很多 這個時候就需要使用視窗分析函式 比如 最近一次行駛里程 select max ded.bill date ded.vin,ded.current milemetre from db.tt repair d...
MySQL 視窗函式高階處理
視窗函式種類 練習題參考 視窗函式也稱為olap函式。olap 是online analyticalprocessing 的簡稱,意思是對資料庫資料進行實時分析處理。為了便於理解,稱之為視窗函式。常規的select語句都是對整張表進行查詢,而視窗函式可以讓我們有選擇的去某一部分資料進行彙總 計算和排...
Hive 視窗函式使用(1)
7 查詢顧客的購買明細及顧客本月最後一次購買的時間 select name,orderdate,cost,last value orderdate,true over partition by name,substring orderdate,1,7 order by orderdate rows ...