[英]How to count users from last 7, 15, 30 dyas ago (from sysdate) Oracle SQL
因此,我试图计算我从sysdate登录7、15和30天前的用户。 我知道我可以统计7天前登录的用户,并且可以对它们进行分组,但是我想统计7、15和30天前登录的用户。
select roel, count(column_name)
FROM USER , STRUCTURE
where login_time > sysdate - 7
group by role
我想得到以下结果:
Role 7days ago 15 days ago 30 days ago Never
Admin 1 20 0 150
如果要计数用户,则基本思想是条件聚合。 假设login_time
和sysdate
都在user
表中,则可以执行以下操作:
select role,
sum(case when login_time > sysdate - 7 then 1 else 0 end) as count_07,
sum(case when login_time > sysdate - 15 then 1 else 0 end) as count_15,
sum(case when login_time > sysdate - 30 then 1 else 0 end) as count_30
from user u
group by role;
为什么在user
和structure
之间进行笛卡尔乘积运算尚不清楚。 对于您拥有的数据,实际上可能需要联接。
同样,为此目的使用sysdate
是不常见的,因为sysdate
具有时间成分。 通常,您只想查看日期。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.