mysql-全表累加統計
實作思路
1)定義用戶變數,設定初始值
2)累加賦值,所求值作為顯示列
SELECT
create_time,total_num,@total_num := 0,
@total_num := @total_num + stn AS stn
FROM (
SELECT
create_time,total_num,sum(total_num) stn
FROM opm_merchant_coupon WHERE activity_id=4020000000220
GROUP BY create_time
order by create_time
) AS temp,(SELECT @total_num := 0) t
說明
- SELECT @total_num := 0表示初始化一個用戶變數并作為臨時表,之后實作類似于java中的累加操作.其中,temp和t是臨時表,@total_num := 0是從臨時表中取出的顯示列.
- 用戶變數這種實作方式適用于全表累加統計.
mysql-分組累加統計
實作思路
1)基于父查詢傳遞的值進行范圍性的子查詢,然后拼接出想要的欄位(子查詢作為顯示列)
2)父查詢最終顯示每一行資料
簡化-示例
SELECT a, b, c,
(SELECT SUM(c) FROM sss WHERE a= A.a AND b<= A.b) t
FROM sss A;
說明
- 父查詢和子查詢通過a欄位關聯(比如id)
- 父查詢第一行資料傳遞關聯欄位值到子查詢,基于子查詢回傳組裝列到第一行父查詢的記錄
- 以此類推,每一行父查詢的記錄便拼接上了累加統計欄位
其它-示例
SELECT
omc.id, omc.merchant_code, omc.merchant_name, omc.user_code, omc.activity_id, omc.activity_name,
omc.parklot_range_code, omc.parklot_range_name, omc.send_type, omc.buy_type, omc.forward_time,
omc.rule_type,
omc.info, omc.time_type, omc.valid_start_time, omc.valid_end_time, omc.delay_time,
omc.valid_time, omc.total_num, omc.remain_num, omc.create_time, omc.op_time, omc.sys_time,
sca.total_num-(SELECT SUM(total_num) FROM opm_merchant_coupon
WHERE activity_id = omc.activity_id AND create_time <= omc.create_time) couponRemainNum
FROM opm_merchant_coupon omc
left join sys_coupon_activity sca on omc.activity_id=
sca.id
where 1=1
and omc.merchant_name like CONCAT('%','大廈中心','%' )
order by omc.create_time desc
limit 0,10
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/148961.html
標籤:其他
上一篇:NoSQL資料庫概述,從0開始
下一篇:PHP操作MySQL資料庫
