主管—》**員 —》發展使用者
主管—》發展使用者
描述主管可以通過發展**員進行發展使用者 也可以直接發展使用者
現需要統計當前所有主管的發展使用者數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表的每一條資料拿出來...