記一次複雜查詢

2022-02-10 04:38:45 字數 1371 閱讀 7228

專案中有乙個需求,查出使用者取出,充值次數,金額,使用者名稱,金幣的總量和每局遊戲的盈虧等做乙個統計,而他們分布在個表中,分別是使用者表,使用者取出表,使用者充值表,每局遊戲表中。

首先想到的就是要分組查詢,group by user.userid.

因為有的使用者有充值記錄但不一定有取出記錄,所以需要外連線查詢。

由於有些資料比如每局遊戲的盈虧是表中沒有的,需要用到子查詢,再連線到主查詢上。

最後sql

select members.user_name as username,

count(deposit_id) as depositcount,

count(withdraw_id) as withdrawcount,

sum(deposit_amount) as depositsum,

sum(withdraw_amount) as withdrawsum,

profitandlosses,

valiwin.validwin

from

members

left join member_deposit on member_deposit.user_id=members.user_id

left join member_withdraw on member_withdraw.user_id=members.user_id

left join (select members.user_id as validwinuserid,

members.user_name as username,sum(win_money) as validwin

from members right join api_win

on api_win.user_id =members.user_id

where settlement_status=1

group by members.user_id) as valiwin on members.user_id=valiwin.validwinuserid

left join (select members.user_id as profitandlossuserid,

members.user_name as username,sum(profitandloss) as profitandlosses

from members right join api_win

on api_win.user_id =members.user_id

group by members.user_id) profitandloss on members.user_id=profitandloss.profitandlossuserid

group by `members`.user_id

記一次sql查詢

效果圖 要查詢出如上圖的效果 知識點.1.多表巢狀查詢.2.輸出查詢結果,group concat函式 3.關聯查詢 select t1.學校,case when t1.年級 2017 then 1年級 when t1.年級 2016 then 2年級 when t1.年級 2015 then 3年...

記一次複雜的sql server xml欄位查詢

專案中一直使用 no sql 的方式將entity序列化成xml格式儲存在sql server資料庫表的xml欄位中,最近終於要對資料進行遷移了,需要將資料遷移回關係型格式,因此也經歷了一次比較有趣而又複雜的xml查詢。具體問題是這樣的。資料庫中有一張entitystate表用於儲存應用中所有被xm...

記一次postgresql查詢優化

一 場景介紹 1 需求 根據schema 1中多表聯查結果,對相應schema 2中資料進行刪除操作。2 表結構 模式表名 表結構schema 1 table 1 id varchar 32 pk主鍵 table 2 id varchar 32 pk主鍵 table 1 id varchar 32 ...