
oracle decode 问题
用decodeif函数查询表中所有房产编号和地址以及所在城市的平均房价如果房价大于均价,将“等级”列标为奢侈,如果小于或等于,则为普通多谢~表结构:房产号地址城市邮编房型...
用decode if 函数查询表中所有房产编号和地址以及所在城市的平均房价
如果房价大于均价,将“等级”列标为奢侈,如果小于或等于,则为普通
多谢~
表结构:
房产号 地址 城市 邮编 房型 租金
共6条数据,不要update,查询的时候加一列“等级”
6条数据都要返回
sorry,我们要求就是用decode.... 顺便说一下,城市平均房价是要用avg求的,表中没有
sorry,这个租金就是房价 展开
如果房价大于均价,将“等级”列标为奢侈,如果小于或等于,则为普通
多谢~
表结构:
房产号 地址 城市 邮编 房型 租金
共6条数据,不要update,查询的时候加一列“等级”
6条数据都要返回
sorry,我们要求就是用decode.... 顺便说一下,城市平均房价是要用avg求的,表中没有
sorry,这个租金就是房价 展开
4个回答
展开全部
表结构,列几条数据
和你想要的结果
你是想update还是查询时加一列?
--补充--
你好像表里没有房价字段,只有个租金,请问,房价是在其他表里体现出来的吗?
select a.*,decode(sign(a.房租-b.房租),1,'奢侈','普通')
from 表名 a,
(select 城市,avg(房租) 房租 from 表名 group by 城市) b
where a.城市=b.城市
和你想要的结果
你是想update还是查询时加一列?
--补充--
你好像表里没有房价字段,只有个租金,请问,房价是在其他表里体现出来的吗?
select a.*,decode(sign(a.房租-b.房租),1,'奢侈','普通')
from 表名 a,
(select 城市,avg(房租) 房租 from 表名 group by 城市) b
where a.城市=b.城市
展开全部
select 房产号,
地址,
城市,
邮编,
房型,
租金,
decode(sign(租金 - avg(t.租金) over(partition by 城市)),
-1,
'普通',
0,
'普通',
'1',
'奢侈') 等级
from 表名 t
地址,
城市,
邮编,
房型,
租金,
decode(sign(租金 - avg(t.租金) over(partition by 城市)),
-1,
'普通',
0,
'普通',
'1',
'奢侈') 等级
from 表名 t
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
case when的实现:
select case when sal>3000 then '奢侈' else '普通' end as dj,sal,ename from emp
和decode是一样的效果,decode是oracle的sql方言中特有的,而case是sql92标准写法,且case灵活性更大,decode只是很简短。
既然非要用decode,给你这段代码:
sys@ORCL>select decode(sign(sal-2000),-1,'普通',0,'正常','奢侈'),sal from emp;
DECO SAL
---- ----------
奢侈 5000
正常 2000
正常 2000
正常 2000
正常 2000
正常 2000
正常 2000
正常 2000
正常 2000
正常 2000
正常 2000
普通 1000
正常 2000
正常 2000
正常 2000
已选择15行。
两种方法任你挑。
select case when sal>3000 then '奢侈' else '普通' end as dj,sal,ename from emp
和decode是一样的效果,decode是oracle的sql方言中特有的,而case是sql92标准写法,且case灵活性更大,decode只是很简短。
既然非要用decode,给你这段代码:
sys@ORCL>select decode(sign(sal-2000),-1,'普通',0,'正常','奢侈'),sal from emp;
DECO SAL
---- ----------
奢侈 5000
正常 2000
正常 2000
正常 2000
正常 2000
正常 2000
正常 2000
正常 2000
正常 2000
正常 2000
正常 2000
普通 1000
正常 2000
正常 2000
正常 2000
已选择15行。
两种方法任你挑。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
给个示例:
SQL> select * from t ;
ID CITY
---------- ----------
1 A
2 A
3 B
1 A
2 A
3 B
6 B
4 B
8 rows selected
SQL>
SQL>
SQL> select t1.city,t1.id,t2.avg_id,decode(ceil((t1.id-t2.avg_id)/t1.id),1,'奢侈','普通')
2 from
3 t t1,
4 (select avg(id) as avg_id ,city from t group by city) t2
5 where t1.city=t2.city ;
CITY ID AVG_ID DECODE(CEIL((T1.ID-T2.AVG_ID)/
---------- ---------- ---------- ------------------------------
A 2 1.5 奢侈
A 1 1.5 普通
A 2 1.5 奢侈
A 1 1.5 普通
B 4 4 普通
B 6 4 奢侈
B 3 4 普通
B 3 4 普通
8 rows selected
SQL> select * from t ;
ID CITY
---------- ----------
1 A
2 A
3 B
1 A
2 A
3 B
6 B
4 B
8 rows selected
SQL>
SQL>
SQL> select t1.city,t1.id,t2.avg_id,decode(ceil((t1.id-t2.avg_id)/t1.id),1,'奢侈','普通')
2 from
3 t t1,
4 (select avg(id) as avg_id ,city from t group by city) t2
5 where t1.city=t2.city ;
CITY ID AVG_ID DECODE(CEIL((T1.ID-T2.AVG_ID)/
---------- ---------- ---------- ------------------------------
A 2 1.5 奢侈
A 1 1.5 普通
A 2 1.5 奢侈
A 1 1.5 普通
B 4 4 普通
B 6 4 奢侈
B 3 4 普通
B 3 4 普通
8 rows selected
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询