--练习.txt:一个更有商业含意的例子
--商品信息表
drop table sm_itemlist;
--为避免出现null的问题,在设计时应更好考虑字段的null属性
--这是一个更好的设计
create table sm_itemlist
(
itemID char(5) not null,--商品编号
itemname varchar(20) not null, --商品名称
tax number(6,2) not null, --营业税
purchase_price number(6,2) not null, --购入价格
sale_price number(6,2) not null, --销售价格
amount number(4) not null, --库存数量
unit varchar(6) not null --商品单位
);
insert into sm_itemlist values('00001','TCL彩电',0.03,800,1000,20,'台');
insert into sm_itemlist values('00002','NEC彩电',0.03,900,1200,10,'台');
insert into sm_itemlist values('00003','联想电脑',0.05,9000,12000,10,'台');
insert into sm_itemlist values('00004','海尔电脑',0.05,8000,10000,10,'台');
--1建立一个表,存储各商品的当前市场信息:
商品编号
商品名称
商品库存数量
库存商品占用的资金
库存商品完全售出要交的税
库存商品完全售出的净利润
商品的利润率
--2用商品信表sm_itemlist生成所有商品的当前市场信息
--3按利润率由大到小显示商品编号,商品名称,库存数量,商品的利润率
create table sm_fenxi(
itemid char(5) not null, --商品编号
itemname varchar2(20) not null, --商品名称
amount number(6,0) not null, --商品当前库存数量
totalzijin number(10,2) not null, --库存商品占用的资金
totaltax number(10,2) not null, --库存商品完全售出要交的税
totalget number(10,2) not null, --库存商品完全售出的净利润
profit_rate number(5,3) not null); --商品的利润率
insert into sm_fenxi (itemid,itemname,amount, totalzijin,totaltax,totalget,profit_rate)
select itemid,itemname, amount ,
purchase_price * amount,sale_price * amount * tax,
sale_price * amount * (1-tax)-purchase_price * amount, --净利润
(sale_price * (1-tax)-purchase_price ) / (purchase_price)
from sm_itemlist;
--注意:在insert 之后字段列表要有(),而select 语句字段列表不能有()。select (...) err!
select itemid,itemname,amount,profit_rate from sm_fenxi order by profit_rate desc;