統計資料包表功能

2021-07-29 21:45:50 字數 2918 閱讀 8661

最近需要實現乙個統計優惠券明細的功能,大致需求是選擇優惠券,來查詢領取了該優惠券的導購員,領取的總數量,發放的數量,剩餘量,以及領取了該優惠券的會員,領取的數量和使用狀態。

這裡涉及了到了5張表,優惠券表,優惠券和導購關聯表,導購資訊表,優惠券和會員關聯表,會員資訊表。他們的關係大致為下圖:

會員資訊表vid(主鍵)=優惠券和會員關聯表vipid

優惠券和會員關聯表

mid=優惠券表.id(主鍵)

優惠券表id(主鍵)=優惠券和導購關聯表.ecid

優惠券和導購關聯表.uid=導購資訊表.acc(主鍵)

然後查詢優惠券相關聯的導購,以及導購領取該優惠券的剩餘量,發放量和總量

sql語句如下:

select userinfo.uname,entinfo.ename,ttl.uid,ttl.ttlcount as uidtotalnumber,rc.rcount as uidremain

from (select uid,count(id) as ttlcount from ls_bs_ecoupond where ecid = # and statu = 0 group by uid) ttl

left join (select uid,count(id) as rcount from ls_bs_ecoupond where ecid =# and statu !=0 group by uid) rc

on ttl.uid = rc.uid

inner join ls_bs_userinfo userinfo on userinfo.acc = ttl.uid

left join ls_md_userent userent on userinfo.acc = userent.uid

left join ls_bs_entinfo entinfo on entinfo.id = userent.eid

where entinfo.etype in ('s','m','z')

另外查詢會員的領取資訊(領取會員,領取數量,使用狀態(使用,未使用))的sql:

select vip.vipname,ttl.eid,ttl.vipid,ttl.ttlcount as viptotalcoupons,uc.vrcount as vipalreadycoupons

from (select cou.vipid,cou.eid,count(cou.id) as ttlcount from ls_bs_coupon cou

where cou.mid = # group by cou.vipid,cou.eid) ttl

left join

(select cou.vipid,cou.eid,count(cou.id) as vrcount from ls_bs_coupon cou

where cou.mid = # and cou.ctype=2 group by cou.vipid,cou.eid) uc

on ttl.eid = uc.eid and ttl.vipid = uc.vipid

left join ls_bs_vipinfo vip on vip.vid = ttl.vipid and vip.eid = ttl.eid

group by vip.vid

下面這條sql則是根據uid(導購的id)來查詢該導購下有那些會員領取他所發放的優惠券資訊:

select vip.vipname,ttl.eid,ttl.vipid,ttl.ttlcount as viptotalcoupons,uc.vrcount as vipalreadycoupons

from (select coud.uid, cou.vipid,cou.eid,count(cou.id) as ttlcount from ls_bs_coupon cou left join ls_bs_ecoupond coud on cou.mid= coud.ecid and coud.id=cou.cid

where cou.mid = # and cou.ctype='0' and coud.uid=# group by cou.vipid,cou.eid,coud.ecid) ttl

left join

(select cou.vipid,cou.eid,count(cou.id) as vrcount from ls_bs_coupon cou left join ls_bs_ecoupond coud on cou.mid= coud.ecid and coud.id=cou.cid

where cou.mid = # and cou.ctype='2' and coud.uid=# group by cou.vipid,cou.eid,coud.ecid) uc

on ttl.eid = uc.eid and ttl.vipid = uc.vipid

left join ls_bs_vipinfo vip on vip.vid = ttl.vipid and vip.eid = ttl.eid

group by vip.vid

以下附上5張表的截圖

1.優惠券表

2.優惠券和會員關係表

3.會員資訊表

4.優惠券和導購關係表

5.導購表

交叉資料包表

有時候需要旋轉結果以便在水平方向顯示列,而在垂直方向顯示行。這就是所謂的建立 pivottable 建立交叉資料包表或旋轉資料。假定有乙個表pivot,其中每季度佔一行。對pivot的 select 操作在垂直方向上列出這些季度 year quarter amount 1990 1 1.1 1990...

交叉資料包表

有時候需要旋轉結果以便在水平方向顯示列,而在垂直方向顯示行。這就是所謂的建立 pivottable 建立交叉資料包表或旋轉資料。假定有乙個表pivot,其中每季度佔一行。對pivot的 select 操作在垂直方向上列出這些季度 year quarter amount 1990 1 1.1 1990...

交叉資料包表

ql交叉資料包表 有時候需要旋轉結果以便在水平方向顯示列,而在垂直方向顯示行。這就是所謂的建立 pivottable?建立交叉資料包表或旋轉資料。假定有乙個表 pivot,其中每季度佔一行。對 pivot 的 select 操作在垂直方向上列出這些季度 year quarter amount 199...