创建一张表WCEmploy(职工号,姓名,部门名,工种,工资)
建表语句:
create table WCEmploy(
id number(3) PRIMARY KEY,
name varchar2(30) not null,
department_name varchar2(15),
type varchar2(30),
salary number(8)
)
插入数据:
insert into WCEmploy values(1,'张三','车间一','钳工',6000);
insert into WCEmploy values(2,'李四','车间一','电工',8000);
insert into WCEmploy values(3,'王五','车间二','车间主任',10000);
insert into WCEmploy values(4,'泰日天','车间一','钳工',6000);
insert into WCEmploy values(5,'风高放火','车间一','电工',8000);
insert into WCEmploy values(6,'沃尔沃','车间二','车间主任',10000);
insert into WCEmploy values(7,'CVBS','车间二','钳工',2000);
insert into WCEmploy values(8,'单个人','车间三','钳工',4500);
insert into WCEmploy values(9,'人头狗','车间二','钳工',6000);
insert into WCEmploy values(10,'后宫番','车间一','钳工',1500);
SQL
--1.请用一个SQL语句查询每个部门的总人数
--部门 DEPARTMENT_NAME
--WCEMPLOY
select DEPARTMENT_NAME 部门 , count(DEPARTMENT_NAME) 部门人数 FROM WCEMPLOY group by DEPARTMENT_NAME;
--2.请用一个SQL语句查询出不同部门的担任“钳工”的职工平均工资
--不同部门 DEPARTMENT_NAME 职位 TYPE 钳工 工资 SALARY
--WCEMPLOY
select DEPARTMENT_NAME 部门 , avg(salary) from WCEMPLOY where type='钳工' group by DEPARTMENT_NAME;
--3.请用一个SQL语句查询出不同部门的担任“钳工”的职工平均工资高于2000的部门
--查询部门 查询工资
--WCEMPLOY
select DEPARTMENT_NAME 部门 , avg(salary) from WCEMPLOY where type='钳工' group by DEPARTMENT_NAME having AVG(salary)>2000;
--4.请用一个SQL语句查询每个部门低于平均工资的员工信息
--查询每个部门的平均工资
--查询低于平均工资的员工全部信息
--WCEMPLOY
select *
from WCEMPLOY w,-- 一个W表
(select AVG(salary) as 平均工资, department_name
from WCEMPLOY
group by DEPARTMENT_NAME) t -- 一个t表
where w.DEPARTMENT_NAME = t.DEPARTMENT_NAME
and w.salary < 平均工资
order by ID;
插入数据练习
一、类型表数据
1 食品类
2 生活用品
3 电器
4 厨房用品
二、商品表数据
1,傻小子 ,20160215, 60天, 2.5, 包,1
2,海飞丝 ,20160614, 730天数, 18.8, 瓶,2
3,海飞丝 ,20161112, 30天, 1.5, 包,1
4,苏泊尔电饭煲 ,20150803, null, 389, 台,3
5,威猛先生 ,20160621, 730天, 36.8, 瓶,4
三、订单信息表
001 20160610 1 200 傻小子工厂 张三 400
002 20161120 1 300 傻小子工厂 张三 500
003 20160820 2 60 海飞丝生产线 王语嫣 840
004 20161201 3 100 辣条生产商 段誉 100
005 20160606 4 100 苏泊尔总经销商 乔峰 3500
006 20160411 5 200 威猛总代理 阿朱 5000
2.执行如下查询语句:
1.查询商品名称和商品价格,商品类型。
2. 查询由业务员王语嫣签订的订单,显示订单的编号,订单价格,订单中商品名称,商品数量。
3. 查询订单总额在1000元以上的所有订单,显示订单编号,订单商品名称,最后根据价钱排序。
4. 根据商品类型分类,查询出每个类型的商品各下个多次订单。
5. 找出订单中金额最高的订单,显示此订单当中的商品名称,单价,订单总额。
6. 查询类型是食品类的所有订单信息,显示订单编号,订单成交的时间。
7. 查询张三的所有订单,但是订单的编号,订单成交的时间,显示订单中商品的名称。
--类型表
create table t_type(
id number(10) primary key,
name varchar2(30) not null
);
--信息录入
insert into t_type(id, name)values(1, '食品类');
insert into t_type(id, name)values(2, '生活用品');
insert into t_type(id, name)values(3, '电器');
insert into t_type(id, name)values(4, '厨房用品');
--商品信息表
create table p_product(
id number(10) primary key,
name varchar2(30) not null,
pro_date date,
eff_date varchar2(30),
price NUMERIC(10,2),
p_unit varchar2(30),
t_id number(10) references t_type(id)
);
--信息录入
insert into p_product (id, name, pro_date, eff_date, price, p_unit, t_id)
values(1,'傻小子',to_date( '2016-02-15' , 'YYYY-MM-DD' ),'60天', 2.5, '包',1);
insert into p_product (id, name, pro_date, eff_date, price, p_unit, t_id)
values(2,'海飞丝',to_date( '2016-06-14' , 'YYYY-MM-DD' ),'730天', 18.8, '瓶',2);
insert into p_product (id, name, pro_date, eff_date, price, p_unit, t_id)
values(3,'辣条',to_date( '2016-11-12' , 'YYYY-MM-DD' ),'30天', 1.5, '包',1);
insert into p_product (id, name, pro_date, eff_date, price, p_unit, t_id)
values(4,'苏泊尔电饭煲',to_date( '2015-08-03' , 'YYYY-MM-DD' ),null, 389, '台',3);
insert into p_product (id, name, pro_date, eff_date, price, p_unit, t_id)
values(5,'威猛先生',to_date( '2016-06-21' , 'YYYY-MM-DD' ),'730天', 36.8, '瓶',4);
--订单信息表
create table o_orders(
id number(10) primary key,
dealtime date,
p_id number(10)references p_product(id) ,
p_num number(10),
c_name varchar2(30),
o_oper varchar2(30),
tatol number(10)
)
--信息录入
insert into o_orders (id, dealtime, p_id, p_num, c_name, o_oper, tatol)
values(001, to_date( '2016-06-10' , 'YYYY-MM-DD' ), 1, 200, '傻小子工厂', '张三', 400);
insert into o_orders (id, dealtime, p_id, p_num, c_name, o_oper, tatol)
values(002, to_date( '2016-11-20' , 'YYYY-MM-DD' ), 1, 300 , '傻小子工厂', '张三', 500 );
insert into o_orders (id, dealtime, p_id, p_num, c_name, o_oper, tatol)
values(003, to_date( '2016-08-20' , 'YYYY-MM-DD' ), 2, 60 , '海飞丝生产线', '王语嫣', 840 );
insert into o_orders (id, dealtime, p_id, p_num, c_name, o_oper, tatol)
values(004, to_date( '2016-12-01' , 'YYYY-MM-DD' ), 3, 100 , '辣条生产商', '段誉', 100 );
insert into o_orders (id, dealtime, p_id, p_num, c_name, o_oper, tatol)
values(005, to_date( '2016-06-06' , 'YYYY-MM-DD' ), 4, 100 , '苏泊尔总经销商', '乔峰', 3500 );
insert into o_orders (id, dealtime, p_id, p_num, c_name, o_oper, tatol)
values(006, to_date( '2016-04-11' , 'YYYY-MM-DD' ), 5, 200, '威猛总代理', '阿朱', 5000 );
---
drop table t_type;
drop table p_product;
drop table o_orders;
---
select * from t_type;
select * from p_product;
select * from o_orders;
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
UPDATE p_product SET name = '辣条' WHERE id = 3;
--1.查询商品名称和商品价格,商品类型。
select p.name 商品名称 , price 商品价格 , t.name 商品类型 from p_product p join t_type t on p.t_id=t.id;
--2. 查询由业务员王语嫣签订的订单,显示订单的编号,订单价格,订单中商品名称,商品数量。
select o_orders.id 订单编号 , tatol 订单价格 , p_product.name 商品名称 , p_num 商品数量 from o_orders join p_product on p_product.id=o_orders.p_id where o_oper='王语嫣';
--3. 查询订单总额在1000元以上的所有订单,显示订单编号,订单商品名称,最后根据价钱排序。
select o.id 订单编号 , p.name 商品名称 from o_orders o join p_product p on p.id=o.p_id where tatol>1000 order by price;
--4. 根据商品类型分类,查询出每个类型的商品订单数量。
select t.id 商品类型 , count(o.p_id) 订单数量 from o_orders o join p_product p on p.id=o.p_id join t_type t on p.t_id=t.id group by t.id;
--5. 找出订单中金额最高的订单,显示此订单当中的商品名称,单价,订单总额。
select p.name 商品名称 , price 单价 , tatol 订单总额 from o_orders o join p_product p on p.id=o.p_id where tatol=(select max(tatol) from o_orders);
--6. 查询类型是食品类的所有订单信息,显示订单编号,订单成交的时间。
select o2.id 订单编号 , o2.dealtime 成交时间 from (select * from o_orders o join p_product p on p.id=o.p_id join t_type t on p.t_id=t.id where t.name='食品类')o2;
--7. 查询张三的所有订单,但是订单的编号,订单成交的时间,显示订单中商品的名称。
select o.id 订单编号 , o.dealtime 成交时间 , p.name 商品的名称 from o_orders o join p_product p on p.id=o.p_id where o_oper='张三';
版权声明:本文为qq_52992141原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。