SQL выберите столбец и посчитайте от следующего столбца - PullRequest
0 голосов
/ 02 февраля 2019

Моя структура таблиц для рефералов такова, поле ref уникально:

ID  pid  ref   ref_by  
1    1   k      NAN
2    2   l      k
3    3   m      k
4    4   n      l

И пользовательская таблица:

id    name   
1     john  
2     Bob  
3     Tim   
4     Rob   

Мне нужно получить id, pid, refи количество ссылок в следующем столбце. Исходя из количества рефералов, каждому из них будет присвоено несколько баллов, равных 100, результат должен выглядеть следующим образом.

pid  name   ref   number_of_referals  points_earned 
1     john   k      2                   200
2     Bob    l      1                   100
3     Tim    m      0                     0
4     Rob    n      0                     0

1 Ответ

0 голосов
/ 02 февраля 2019

Вам нужно 2 объединения:1-й от users таблицы до referrals и 2-й к запросу, который группирует и считает рефералов:

select 
  r.id, u.name, r.ref,
  case when c.counter is null then 0 else c.counter end number_of_referals,
  case when c.counter is null then 0 else c.counter end * 100 points_earned
from users u inner join referrals r
on r.pid = u.id
left join (select ref_by, count(*) counter from referrals group by ref_by) c
on c.ref_by = r.ref
order by r.id

См. демо

...