眾說周知,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...