我正在嘗試執行某些操作,但我不確定如何執行此操作。對於查詢中的每一行,從其他查詢中選擇前20位
我有一些數據是這樣的:
WITH a AS (SELECT theid, thename, thetimestamp FROM mytable)
SELECT thename, TRUNC (thetimestamp, 'HH24'), COUNT (theid) FROM a
group by thename,trunc(thetimestamp,'HH24') ORDER BY COUNT (theid) desc)
返回我按小時和名稱分組計數。
我想這僅僅是
for each hour, top X counts
這可能嗎?
我結束了:
SELECT thename, hour, cnt
FROM
(SELECT thename, hour, cnt,
rank() over (partition by hours order by cnt desc) rnk
FROM
(SELECT thename, TRUNC (thetimestamp, 'HH24') hour, COUNT (theid) cnt
FROM mytable
group by thename,trunc(thetimestamp,'HH24')
)
)
WHERE rnk <= :X
我刪除了(通過thename分區,以便通過CNT DESC)的「逗號」,我需要按小時而不是thename但在其他方面完美partion ! – svrist 2009-11-09 14:31:46
糟糕,現在修復了。謝謝。 – 2009-11-09 14:48:04