在实际开发运用中,常会有关于查询排名的需求,如查询某一数据完成比率情况,通常可以用自身表先进行相关计算查询,再和原表进行关联进行查询,即可查询出相关所需的数据.
如:要查询某一农田拆迁情况,需查询拆迁项目名,拆迁完成比率,可这样查询:
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 阅读(285)
评论(0) 编辑 收藏