У меня есть данные в формате
|user_id|week_id|betId|
|1|1|...|
|1|1|...|
|1|3|...|
|2|2|...|
|2|3|...|
Это ставки, где пользователь может разместить много ставок за каждую игровую неделю. Я хочу преобразовать эти данные, чтобы у меня был двоичный столбец, который указывает каждую неделю, если пользователь поставил какие-либо ставки, поэтому, учитывая мой пример, это будет:
|week_id|user_id|did_play|
|1|1|1|
|1|2|0|
|2|1|0|
|2|2|1|
|3|1|1|
|3|2|1|
Может кто-нибудь объяснить, как будет выглядеть запрос SQL для этого
Мне удалось получить счет для каждого пользователя за каждую игровую неделю, используя:
SELECT user_id, week_id, count(user_id)
FROM game_slips
GROUP by week_id, user_id
Я просто хочу превратить счет в двоичный столбец для воспроизведения/не
Вы можете сгенерировать все строки, используя cross join
а затем преобразовать в логическое:
select u.userId, w.weekId, (count(t.userId) > 0) as did_play
from (select distinct userId from t) u cross join
(select distinct weekId from t) w left join
t
on t.userId = u.userId and t.weekId = u.weekId
group by u.userId, w.weekId