2016-04-23 32 views
0

這裏是我的查詢,我需要列出的教授,只有有一定的月薪,而是爲了通過他們的年薪

SELECT pr_id, pr_name, pr_date_hired, pr_title, pr_college, pr_salary 
    FROM professor 
WHERE pr_college NOT IN ('Education' ,'Social Sciences') 
    AND (pr_salary/12 BETWEEN 5000 AND 8000) 
ORDER BY pr_salary DESC; 

我想通了,謝謝你們! 我必須在where語句中進行劃分,以便我可以按年薪而不是月薪來訂購。

編輯:我改成了12 * 5000和12 * 8000,它給了/同樣的答案pr_salary 12

+1

那麼是什麼問題?你知道如何使用'WHERE'來執行過濾。什麼阻止你添加你需要的過濾器? (順便說一句,按月工資排序,按年薪計算產生完全相同的結果。) – hvd

+0

你很困惑。按計算的月薪計算訂單與年薪相同。想想看。自己做數學。使用三名員工,年薪分別爲36,000,2,4,000和12,000。然後除以12得到每月3,000,2,000和1,000。按工資排列這兩個清單,他們將以**完全相同的順序**。 –

+0

我強烈建議你使用'pr_salary BETWEEN 12 * 5000 AND 12 * 8000'來代替'pr_salary/12 BETWEEN 5000和8000',因爲如果'pr_salary'列被索引,Oracle將無法使用索引if你乘以/除等。索引欄 – MaxU

回答

0

你就要成功了,你可以使用一個外部查詢或表達式本身並篩選相應的像

SELECT pr_id, pr_name, pr_date_hired, 
pr_title, pr_college, pr_salary/12 as computed_salary 
FROM professor 
WHERE pr_college NOT IN ('Education' ,'Social Sciences') 
AND pr_salary/12 = <some_value_you_want_to_filter> 
ORDER BY pr_salary DESC; 
+0

需要按年薪訂購,不確定在計算月薪時該怎麼做。 – Deniz

+0

@Deniz,請參閱發佈的查詢,在答案中您按薪金專欄'ORDER BY pr_salary DESC' – Rahul

相關問題