所以,我正在尝试计算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_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
具有时间成分。 通常,您只想查看日期。