我一直在這個圈子裏繞了一段時間,希望有人能幫助我。SQL - 計數行的性能調整
我有以下表格:
案件
generic_case_id
case_subtype
Case_Countries
generic_case_id
篇COUNTRY_CODE
論文
generic_case_id
paper_name
Archived_List
paper_name
現在,我我試圖得到一個未歸檔的獨特紙張名稱列表。然後爲每個紙張清單列出與之相關的案例數量。
SELECT paper_name, case_count
FROM (
SELECT paper_name, count (1) case_count, row_number() over (order by paper_name DESC) rn, count(*) over() count_rec
FROM (
SELECT distinct(paper_name), generic_case_id
FROM papers a, cases b, case_countries c
WHERE
NOT EXISTS (select paper_name FROM archived_list d WHERE a.paper_name = d.paper_name)
AND a.generic_case_id = b.generic_case_id
AND b.generic_case_id = c.generic_case_id
AND c.country_code = '15618'
AND b.case_subtype IN (50022,50023)
) GROUP BY paper_name
)
WHERE rn BETWEEN 1 AND 15;
這似乎工作,雖然它需要很長時間才能完成。任何人都可以提出更清潔的方法?
感謝 伊恩
爲什麼三重嵌套?外部的一個可以肯定地被移除。 –
請提供表格的CREATE和INSERT語句或使用http://sqlfiddle.com/。 – anna
對不起 - 我也分頁結果,並忘記刪除外row_number的東西。將編輯 – user2294382