sql語句 關聯查詢記錄 分銷情景統計

2021-10-10 14:37:07 字數 1057 閱讀 3385

主管—》**員 —》發展使用者

主管—》發展使用者

描述主管可以通過發展**員進行發展使用者 也可以直接發展使用者

現需要統計當前所有主管的發展使用者數top30 其中需要包含主管單獨發展的使用者數

select ifnull(c.distri_user_id, c.user_id) as userid, count(*) as usercount

from sys_user b

join sys_user c on b.recommender_user_id = c.user_id

where c.distri_user_id is not null

or c.new_flag = 30

group by userid

order by usercount desc

limit 30

其中別稱 b為發展使用者 c為**員/主管 使用內連線進行查詢

關聯條件為 b.recommender_user_id=c.user_id 其中發展使用者的recommender_user_id是指推薦人id,

c.user_id為使用者id可能為**員也可能為主管

接下來 where語句 c.distri_user_id is not null or c.new_flag=30 篩選出符合條件的**員或者主管

c.distri_user_id 欄位為上級使用者id 非空說明該使用者為**員級別,c.new_flag=30 new_flag是乙個標識身份的字段說明等於3說明是主管身份

繼續 group by userid 此處如果不加其他處理獲得是將是 **員和主管的統計,通過select 中使用 ifnull(c.distri_user_id,c.user_id) as userid,可以巧妙的解決該問題,如果有上級id(distri_user_id)則使用上級字段,如果沒有該欄位說明為主管使用者直接發展的使用者,直接使用該user_id即可。

最後order by usercount desc 根據使用者數進行倒敘排序 , limit 30 取前30 個資料即可完成。

sql美化

sql語句 關聯查詢

1,關聯查詢 sql中多個left join,為了保證返回數量和主表一樣,要加個group by 主表id 2,if,ifnull,concat ws等常見方法 1 concat ws country,province,city region 三欄位按照 之間的內容合拼 concat ws case...

SQL關聯查詢

一 關聯基礎 連線查詢 查詢兩個或兩個以上資料表或檢視的查詢,通常建立在存在相互關係的父子表之間。關聯查詢 查詢的結果集中的字段可能來自多張表。要從多張表中獲取資料時,就要找到這幾張表記錄的對應關係,然後建立聯絡後分別獲取。所以連線條件 指明表之間記錄的對應關係 在關聯查詢中十分關鍵。n 張表關聯查...

sql關聯查詢

1.內連線 是最普遍的一種連線方式,選出相連的兩張表都互相滿足連線條件的資料。寫法 select ainner joinb on a.id b.aid 其中inner可忽略 舉例 a表 查詢語句 select from a inner join b on a.id b.id。將a表的每一條資料拿出來...