所以,我正在尝试计算登录7,15的用户,& 30天前来自sysdate。我知道我可以算上7天前玩过的用户,我可以对它们进行分组,但我想算一下7,15和10的用户。 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
答案 0 :(得分:2)
如果要计算用户数,基本思路是条件聚合。假设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
有一个时间组件。通常,您只想查看日期。