我试图统计每天在某些位置发生的某些交易类型。例如,如果我有两种不同类型的交易x,y以及一个日期和一个位置(NY),我将尝试查看该日期和该位置的x交易次数,y的交易次数以及总。看起来不错,但是当我使用按日期排序的结果时,结果会更改并且相同日期的所有位置都具有相同的计数。有人可以在这里解释为什么会这样吗。 对于不同的位置和相同的日期,我得到相同的计数。
我使用了以下逻辑
select location, trunc(date),
count(location) over (partition by date) as grand_total
from table
where transaction_types in (x,y)
ORDER BY DATE DESC
预期结果应为:
locaton date grandtotal
NY 1/1/2019 5
NJ 1/1/2019 7
实际
LOCATION DATE GRANDTOTAL
NY 1/1/2019 5
NJ 1/1/2019 5
对于不同的位置和相同的日期,我的计数相同。
答案 0 :(得分:1)
只需在分区中添加位置,就像每个日期都需要按日期排列一样,而不仅仅是按日期排列,因此分区应该使用日期中包含的位置进行
select location, trunc(date),
count(location)
over (partition by location, date) as
grand_total
from table where transaction_types in
(x,y)
ORDER BY DATE DESC
答案 1 :(得分:0)
我认为以下使用group by
和条件aggregate
函数的查询可以解决您的问题:
select location,
trunc(date),
Sum(case when transaction_types = 'x' then 1 end) as x_total,
Sum(case when transaction_types = 'y' then 1 end) as y_total,
count(1) as total
from table where transaction_types in (x,y)
group by location,trunc(date);
干杯!