在使用avg函数时,我无法弄清楚每个dense_rank结果只能检索一行。它在某种程度上是结果的组合。
select
AVG(price) OVER(PARTITION BY hour) AS avg_price,
dense_rank() over(order by hour) as TheRank
from table
where transdate <= to_date('03032016', 'DDMMYYYY')
我的结果如下
avg_price TheRank
10 1
10 1
12 2
12 2
15 3
15 3
我想要
avg_price TheRank
10 1
12 2
15 3
希望有足够的信息来指导你。 提前谢谢,
克里斯
答案 0 :(得分:0)
这是与dense_rank()
&#34;之后&#34;:
select AVG(price) as avg_price,
dense_rank() over (order by AVG(price)) as TheRank
from table
where transdate <= date '2016-03-03' -- remove `date` if you are not using Oracle
group by hour;
这假定您希望按小时汇总,然后按价格按平均每小时排名。
答案 1 :(得分:0)
在论坛上搜索构建sample_date以提供更多信息后,我找到了我的解决方案
select
AVG(price) keep(dense_rank last order by PARTITION BY hour) AS avg_price
from table
where transdate <= to_date('03032016', 'DDMMYYYY')