請(qǐng)教一個(gè)mysql查詢的問(wèn)題
問(wèn)題描述
設(shè)一個(gè)表中記錄了用戶的積分變動(dòng),默認(rèn)為加
主鍵用戶id變動(dòng)日期變動(dòng)數(shù)值100012017-01-01 00:00:0010200022017-01-01 04:10:0020300012017-02-01 05:04:00400400012017-02-05 00:00:0010500022017-04-01 00:00:0030而我如果需要查出各用戶各時(shí)間段的資金變動(dòng)總和,如下表所示
主鍵用戶id變動(dòng)日期變動(dòng)數(shù)值變動(dòng)總和100012017-01-01 00:00:001010200022017-01-01 04:10:002020300012017-02-01 05:04:00400410400012017-02-05 00:00:0010420500022017-04-01 00:00:003050這種sql改如何書(shū)寫?我用的是mysql5.6,結(jié)果集順序沒(méi)有要求。
問(wèn)題解答
回答1:select sum(變動(dòng)數(shù)值) from table where 變動(dòng)日期 >=yymmdd and 變動(dòng)日期 <=yymmdd group by 用戶id
回答2:這樣的需求建議到程序中處理性能會(huì)好很多
當(dāng)然mysql 也可以直接查詢出結(jié)果
select a.*,sum(b.變動(dòng)數(shù)值) as 變動(dòng)總和 from table a left join table as b on a.用戶id=b.用戶id and a.變動(dòng)日期>=b.變動(dòng)日期 group by a.主鍵回答3:
select ccc.* ,if(@lag_uuid = 用戶id ,@lag:=@lag+變動(dòng)數(shù)值,@lag:=變動(dòng)數(shù)值) 變動(dòng)總和, (@lag_uuid := 用戶id) lag_uuid
from (SELECT * FROM tbl_ WHERE 1=1 order by 用戶id ) ccc,(select @lag:=0,@lag_uuid:=null) tb_lag
order by ccc.id
相關(guān)文章:
1. 關(guān)docker hub上有些鏡像的tag被標(biāo)記““This image has vulnerabilities””2. boot2docker無(wú)法啟動(dòng)3. docker-compose中volumes的問(wèn)題4. java - SSH框架中寫分頁(yè)時(shí)service層中不能注入分頁(yè)類5. docker安裝后出現(xiàn)Cannot connect to the Docker daemon.6. nignx - docker內(nèi)nginx 80端口被占用7. dockerfile - 為什么docker容器啟動(dòng)不了?8. docker images顯示的鏡像過(guò)多,狗眼被亮瞎了,怎么辦?9. docker容器呢SSH為什么連不通呢?10. 關(guān)于docker下的nginx壓力測(cè)試

網(wǎng)公網(wǎng)安備