Создание фиктивных переменных с использованием условия - PullRequest
0 голосов
/ 02 декабря 2018

Я студент и новичок в SQL

У меня есть таблица со столбцами: ID_USER, DATE и PAYMENT_DUMMY, которая содержит информацию о пользовательских платежах за каждый месяц ( 1 - платный,0 - не заплатил ).

Мне нужно создать еще одну фиктивную переменную, которая будет идентифицировать пользователей, которые не платили в первый или первый и второй месяцы, но заплатили в оставшиеся ( вна скриншоте это пользователи 1225964 и 1249528 ).

Может кто-нибудь помочь мне в этом?

https://i.stack.imgur.com/0q7wu.jpg

1 Ответ

0 голосов
/ 02 декабря 2018

Возможно, это когда внутренний запрос выделяет номер строки, а внешний запрос определяет, сколько из первых 2 месяцев не было оплачено

drop table if exists t;
create table t(id int, dt date, dummy int);
insert into t values 
(1,'2018-01-31',1),(1,'2018-02-28',1),(1,'2018-03-31',1),
(2,'2018-01-31',0),(2,'2018-02-28',0),(2,'2018-03-31',1),
(3,'2018-01-31',1),(3,'2018-02-28',0),(3,'2018-03-31',1),
(4,'2018-01-31',0),(4,'2018-02-28',0),(4,'2018-03-31',0);

    select s.id,sum(dummy) cnt
from
(
select t.*,
        if (t.id <> @p,@r:=1,@r:=@r+1) r,
        @p:=t.id p
from t
cross join (select @r:=0,@p:=0) rn
order by t.id,t.dt
) s
where s.r <= 2 
group by s.id having cnt = 0;

+------+------+
| id   | cnt  |
+------+------+
|    2 |    0 |
|    4 |    0 |
+------+------+
2 rows in set (0.00 sec)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...