如果标题不太清楚我很抱歉,但以下说明会更加准确。
我有以下观点:
DATE USER CONDITION
20140101 1 A
20140101 2 B
20140101 3 C
20140108 1 C
20140108 3 B
20140108 2 C
我需要做的是提供本周和之前7天所有条件下的用户数量。
输出应该是这样的:
Condition Today Last_Week (Today-7)
A 0 1
B 1 1
C 2 1
我如何在Oracle中执行此操作?我将需要这样做4周所以今天是7,14-21。
我已尝试使用group by,但我将“week2”作为行。然后我尝试了类似Select conditions, (select count(users) from MyView where DATE='Today') FROM MyView
的东西(查看实际工作的东西),但它对我不起作用。
通过对接受的答案进行一些修改来实现这一目标:
select condition,
count(case when to_date(xdate) = to_date(sysdate) then 1 end) to_day,
count(case when to_date(xdate) = to_date(sysdate-7) then 1 end) last_7_days
from my_table
group by condition
答案 0 :(得分:1)
select condition, count(case when to_date(xdate) = to_date(sysdate) then 1 end) to_day,
count(case when to_date(xdate) < to_date(sysdate) then 1 end) last_7_days
from my_table
where to_date(xdate) >= to_date(sysdate) - 7
group by condition
答案 1 :(得分:0)
select condition
, sum
( case
when date between trunc(sysdate) - 7 and trunc(sysdate) - 1
then 1
else 0
end
)
last_week
, sum
( case
when date between trunc(sysdate) and trunc(sysdate + 1)
then 1
else 0
end
)
this_week
from table
group
by condition
通过使用条件计数(作为总和)并在条件上分组,您可以过滤掉所有所需的日期。请注意,使用trunc将导致使用当天的开头。