使用条件创建虚拟变量

xv8emn3q  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(376)

我是一名学生,sql初学者
我有一个包含列的表: ID_USER, DATE 以及 PAYMENT_DUMMY ,其中包含每个月用户付款的信息(1-已付款,0-未付款)。
我需要创建另一个虚拟变量,该变量将标识在第一个月或第一个月和第二个月内没有支付,但在剩余月份支付的用户(在屏幕截图中,这些用户是1225964和1249528)。
有人能帮我吗?

xpcnnkqh

xpcnnkqh1#

也许这是内部查询分配一个行号,外部查询计算出前两个月有多少未支付

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)

相关问题