我到处寻找答案,但似乎没有什么能与我的问题相比。因此,使用带有查询的汇总:
select year, month, count (sale_id) from sales
group by rollup (year, month);
将给出如下结果:
YEAR MONTH TOTAL
2015 1 200
2015 2 415
2015 null 615
2016 1 444
2016 2 423
2016 null 867
null null 1482
我想按总降序排序,但我希望总数最大的年份位于顶部(重要:与该年份相比的所有记录),然后是其他年份的其他记录。所以我希望它看起来像:
YEAR MONTH TOTAL
null null 1482
2016 null 867
2016 1 444
2016 2 423
2015 null 615
2015 2 415
2015 1 200
或者类似的东西。主要目的是在按总计排序时不“分割”与一年相比的记录。有人可以帮我吗?
最佳答案
嗯。我认为这符合您的要求:
select year, month, count(sale_id) as cnt
from sales
group by rollup (year, month)
order by sum(count(sale_id)) over (partition by year) desc, year;
实际上,我从未在带有 rollup
查询的 order by
中使用窗口函数。如果需要子查询,我不会感到惊讶。
关于sql - Oracle SQL : Order by with GROUP BY ROLLUP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42096686/