在實際開發運用中,常會有關于查詢排名的需求,如查詢某一數據完成比率情況,通常可以用自身表先進行相關計算查詢,再和原表進行關聯進行查詢,即可查詢出相關所需的數據.
如:要查詢某一農田拆遷情況,需查詢拆遷項目名,拆遷完成比率,可這樣查詢:
select tt.projectname ,tt.wzbl, DENSE_RANK() OVER ( ORDER BY tt.wzbl DESC) as bm from
(
select * from kp_confiscate t0,(select kf.promiseunfinished/kf.taskridgepole*0.5+kf.finishedridgepole/kf.taskridgepole as wzbl,kf.id from kp_confiscate kf ) t1
where t0.id=t1.id
) tt;
其中:
promiseunfinished:簽訂協議未拆完數;
finishedridgepole:已拆完數;
taskridgepole :任務數
拆遷完成比例=簽訂協議未拆完數/任務數x50%+已拆完數/任務數
拆遷完成比例即為所需查詢數據.
即查詢時,先對自身表進行相關計算查詢(實際的需求就在這個子查詢中完成),然后作為一個子表,和原表進行關聯查詢.
注:子表中查詢時,要指定查詢下某字段,此字段是和原字段進行關聯查詢時用的,且應為唯一字段,在和原表關聯查詢時,不應有冗余的數據出現.
posted on 2009-09-30 17:38
henry1451 閱讀(299)
評論(0) 編輯 收藏