2015-04-01 39 views
1

我希望得到您的幫助。 我有一個名爲employee_details的表。它有四列:如何在過程中的單個查詢中合併5個查詢以減少執行時間

user_id VARCHAR2(255)) 
user_name(VARCHAR2(255)) 
nickname(VARCHAR2(255)) 
created_on(date) 

現在我已經寫了5個手續單獨的查詢來獲取對誰期限sysdate-1sysdate-30sysdate-60sysdate-90期間註冊/ created_on和sysdate用戶的數據,但我想獲取這個數據只需一個查詢,可以減少程序的執行時間。請幫助我,如果需要更多詳細信息,請告訴我。

到目前爲止,我已經寫了下面的查詢:

1. SELECT COUNT (DISTINCT mth.user_id) 
      FROM employee_details mth     
      WHERE mth.created_on < TO_DATE (todate, 'DD/MM/RRRR') 
      AND mth.created_on >= TO_DATE (fromdate, 'DD/MM/RRRR') 
             - 90; 
2. SELECT COUNT (DISTINCT mth.user_id) 
      FROM employee_details mth     
      WHERE mth.created_on < TO_DATE (todate, 'DD/MM/RRRR') 
      AND mth.created_on >= TO_DATE (fromdate, 'DD/MM/RRRR') 
             - 60; 
3. SELECT COUNT (DISTINCT mth.user_id) 
      FROM employee_details mth     
      WHERE mth.created_on < TO_DATE (todate, 'DD/MM/RRRR') 
      AND mth.created_on >= TO_DATE (fromdate, 'DD/MM/RRRR') 
             - 30; 
4. SELECT COUNT (DISTINCT mth.user_id) 
      FROM employee_details mth     
      WHERE mth.created_on < TO_DATE (todate, 'DD/MM/RRRR') 
      AND mth.created_on >= TO_DATE (fromdate, 'DD/MM/RRRR') 
             - 1; 
5. SELECT COUNT (DISTINCT mth.user_id) 
      FROM employee_details mth     
      WHERE mth.created_on < TO_DATE (todate, 'DD/MM/RRRR')+1 
      AND mth.created_on >= TO_DATE (fromdate, 'DD/MM/RRRR'); 

其中fromdatetodate要由過程調用SYSDATE取代。

+0

你嘗試過這麼遠嗎?你可以編輯添加您的查詢,因爲它目前站立?如果你能證明你正試圖解決問題,那麼人們可以以更有針對性的方式提供幫助,這個問題不會因爲「太寬泛」而關閉。 – 2015-04-01 10:07:16

+0

謝謝 - 這使得它更清晰,並表明您正在積極研究這一點,而不僅僅是尋求某人爲您編寫代碼!另一個問題 - 你是否在所有5個子查詢中尋找不同用戶的單個計數,或者你是否在尋找每個子查詢的計數? – 2015-04-01 10:23:25

+0

嗨,克里斯,我想單獨計數每個子查詢,但不應該有5個子查詢分開像上面的程序。我只想要像90這樣的東西是它最先取得的最大差異,然後是60取自90以上,不應該從表中取出。 – netdamin 2015-04-01 10:33:57

回答

0

獲取(根據你想即1,30,60或90等..什麼時間段)沒有天數作爲參數傳遞給你的程序,並嘗試類似如下:

這個例子是讓過去三天中創建的記錄(今天申,2015年4月1日)

SELECT * FROM emp_temp WHERE created_on >= DATE_ADD(CURDATE(), INTERVAL -3 DAY); 

enter image description here

希望這可以幫助你......

謝謝,

〜CHANDAN

+0

這是MySQL查詢... – 2015-04-01 10:32:23