SQL выберите столбец и посчитайте от следующего столбца

0

Моя структура таблицы для рефералов такова, поле 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 и count 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

  • 0
    Пожалуйста, не отмечайте несколько RDBMS. Пожалуйста, пометьте только тот, который вы на самом деле используете; пометка нескольких делает затруднительным для пользователей, присутствующих здесь, чтобы ответить, а не получить больше пользователей, чтобы ответить на него. Я удалил 2 тега, пожалуйста, отредактируйте свой пост и отметьте только ту СУБД, которую вы используете. Спасибо.
Теги:
sql-server
mariadb
count

1 ответ

0

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

select 
  r.id, u.name, r.ref,
  isnull(c.counter, 0) number_of_referals,
  isnull(c.counter, 0) * 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

Посмотреть демо

Ещё вопросы

Сообщество Overcoder
Наверх
Меню