繁体   English   中英

如何计算最近7、15、30年以前的用户数(来自sysdate)Oracle SQL

[英]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_timesysdate都在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;

为什么在userstructure之间进行笛卡尔乘积运算尚不清楚。 对于您拥有的数据,实际上可能需要联接。

同样,为此目的使用sysdate是不常见的,因为sysdate具有时间成分。 通常,您只想查看日期。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM