--练习.txt:一个更有商业含意的例子
--商品信息表
drop table sm_itemlist;
create table sm_itemlist
(
itemID char(5) ,--商品编号
itemname varchar(20) , --商品名称
tax number(6,2) , --营业税(按照销售价的百分比计算)
purchase_price number(8,2) , --购入价格
sale_price number(8,2) , --销售价格
amount number(4) , --库存数量
unit varchar(6) --商品单位
);
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,'台');
--全部商品打8折,求出打折后各商品的价格
select itemname , sale_price * 0.8 from sm_itemlist;
--求出各库存商品占用的资金
select itemname , purchase_price * amount from sm_itemlist;
--求出各库存商品完全售出要交的税
select itemname , sale_price * amount * tax from sm_itemlist;
select sum(purchase_price * amount) from sm_itemlist;
--求出各库存商品完全售出的净利润=利润-投资
select itemname , sale_price * amount * (1-tax)-purchase_price * amount from sm_itemlist;
--求出各库存商品的利润率 = 利润 / 投资
select itemname ,
(sale_price * amount * (1-tax)-purchase_price * amount) / (purchase_price * amount)
from sm_itemlist;
--或
select itemname ,
(sale_price * (1-tax)-purchase_price ) / (purchase_price)
from sm_itemlist;
-------------null -----------------
--null对计算的影响
--营业税为null
insert into sm_itemlist
values('00005','海尔电脑null',null,8000,10000,10,'台');
--全部商品打8折,求出打折后各商品的价格
select itemname , sale_price * 0.8 from sm_itemlist;
--求出各库存商品完全售出要交的税
select itemname , sale_price * amount * tax from sm_itemlist;
--求出各库存商品完全售出的净利润
select itemname , sale_price * amount * (1-tax)-purchase_price * amount from 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 --商品单位
);