mysql中使用分析函式 開窗函式

2021-07-10 19:13:18 字數 1529 閱讀 2719

眾說周知,oracle的分析函式用於複雜的統計方面非常好用,但mysql不支援oracle的分析函式(開窗函式),怎麼辦呢?

我們可以通過另外的途徑來使用,直接貼上**:

create table income_tl(

user_id int,

create_date date,

income int

);insert into income_tl values(1,'2016-03-01',100);

insert into income_tl values(1,'2016-03-02',300);

insert into income_tl values(1,'2016-03-03',200);

insert into income_tl values(1,'2016-03-04',500);

insert into income_tl values(1,'2016-03-05',500);

insert into income_tl values(2,'2016-03-01',200);

insert into income_tl values(2,'2016-03-02',300);

insert into income_tl values(2,'2016-03-03',300);

insert into income_tl values(2,'2016-03-04',500);

insert into income_tl values(2,'2016-03-05',400);

select it.user_id,

it.create_date,

it.income,

case

when @preval = it.user_id then @curval := @curval + it.income

when @preval := it.user_id then @curval := it.income

end as sum_income

from income_tl it, (select @preval:=null, @curval:=null) r

order by it.user_id asc, it.create_date asc;

執行結果為:

備註:1. @preval和@curval為使用者變數,僅針對當前客戶端有效;

2. (select @preval:=null, @curval:=null) r 初始化@preval和@curval變數;

2. 第二個when僅用作為@preval賦值,表示條件一直為true。(mysql中『』、0、null均為false);

以上即為mysql中類似分析函式(開窗函式)的使用,歡迎指正,謝謝。

mysql中使用分析函式 開窗函式

sql的分析函式用於複雜的統計方面非常好用,但mysql8之前不支援分析函式 開窗函式 怎麼辦呢?我們可以利用變數來實現,先建立乙個表 create table income tl user id int,create date date,income int insert into income ...

mysql開窗函式有哪些 mysql開窗函式

開窗函式 它可以理解為記錄集合,開窗函式也就是在滿足某種條件的記錄集合上執行的特殊函式。對於每條記錄都要在此視窗內執行函式,有的函式隨著記錄不同,視窗大小都是固定的,這種屬於靜態視窗 有的函式則相反,不同的記錄對應著不同的視窗,這種動態變化的視窗叫滑動視窗。開窗函式的本質還是聚合運算,只不過它更具靈...

mysql 開窗函式 累加 mysql實現開窗函式

學習過oracle的應該知道,oracle中的分析函式功能十分強大,包括mssql postgresql等資料庫都支援開窗函式。然而mysql至今都沒有提供這樣的功能,今天就來 下用mysql實現一些開窗功能需求。實驗資料 表sale month user id amount 201601 1 50...