如何计算过去 7、15、30 年前的用户(来自系统日期)Oracle SQL



所以,我正在尝试计算7,15天前和30天前从sysdate登录的用户。我知道我可以计算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具有时间成分。 通常,您只想查看日期。

最新更新