2017-02-07 168 views
2

我正在尋找一個答案,但似乎沒有什麼比較我的問題。因此,使用匯總與查詢:Oracle sql:通過GROUP BY ROLLUP排序

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 

或類似的東西。主要目的是在整體分類時不會「分割」與一年相比的記錄。有人可以幫助我嗎?

回答

0

嗯。我想這你想要做什麼:

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; 

其實,我從來沒有在order by使用窗口函數與rollup查詢。如果子查詢是必要的,我不會感到驚訝。

+0

似乎工作正常,謝謝! –

0

嘗試使用窗函數max獲得總共最多,每年在ORDER BY子句:

select year, month, count(sale_id) total 
from sales 
group by rollup(year, month) 
order by max(total) over (partition by year) desc, total desc;