要求

(1)按公司客户所在地来统计销售总额

(2)查询公司从96年8月开始单价超过2000块的采购单号和供应商

(3)查询公司目前库存商品的名称和数量

(4)查询公司采购金额超过10万的定单信息(包括 定单号厂家 商品名)

(5)查询库存量前三名的产品名称

(6)查询库存商品销售金额在第三到第六的供货商的信息

(7)查询同一类型产品有两家以上供货商的产品编号以及供货商的数量

(8)统计公司各种产品的销售金额(需要区分不同的厂家)

(9)查询公司在96年10月的定单,计算每日定单金额,并按照定单金额排序

(10)查询一笔销售记录中包含有两条明细记录的销售总帐记录

(11)查询销售总表和销售明细表中不符合参照关系的数据(定单编号为参照字段)。

(12)查询每个员工的工资以及应该交纳的个人所得税金额(40000以下不交, 40000---49999 5% 50000—59999 7% 60000以上 10%)

(13)生成公司销售的明细表要求表中需要表现的信息为(定单号,销售员姓名,销售产品, 供伙商名称,销售金额)

(14)在采购明细表中查询 同类产品在不同时间进货差价超过200元的产品及供货商名称

(15)查询在同一天进入公司的员工信息

(16)查询公司所有客户在公司的定货情况

(17)查询由公司女业务员所接回的定单

(18)查询公司中姓名相同的员工并按照员工编号显示员工信息

(19)查询公司中目前业绩还没有超过2万的业务员

(20)查询仓库中还没有销售过的产品信息

(21)查询没有在公司订购产品的客户名单

(22)按照供货商来统计公司的销售榜

过程

(1)按公司客户所在地来统计销售总额

这里我使用了两个表一个是customer,一个是sales表



SELECT addr as 所在地,sum(toa_amt) as 销售总额 FROM customer,sales
WHERE customer.cus_id=sales.cus_id
GROUP BY addr


(2)查询公司从96年8月开始单价超过2000块的采购单号和供应商

这里我们使用了两个表一个是supply,一个是pur_item,将两个表通过供货商的id一致进行连接。

SELECT pur_no AS 采购单号,sup_name AS 供应商 FROM supply,pur_item
WHERE supply.sup_id=pur_item.sup_id and unit_price > 2000 AND pur_date >=
'1996-08-01'


(3)查询公司目前库存商品的名称和数量

我们使用stock和product两个表,通过产品编号连接,这里因为有一些产品是出自于其他的供货商,但我按名字分组,将不同供货商的同一产品归为一类。

SELECT prod_name AS 名称,sum(stk_qty) AS 数量 FROM stock,product
WHERE stock.prod_id=product.prod_id GROUP BY prod_name


(4)查询公司采购金额超过10万的定单信息(包括 定单号厂家 商品名)

SELECT sup_name AS 订单号厂家, prod_name AS 商品名 FROM product,supply,pur_item
WHERE pur_item.prod_id=product.prod_id AND supply.sup_id=pur_item.sup_id AND qty * unit_price > 100000


(5)查询库存量前三名的产品名称

SELECT prod_name AS 产品名称 FROM (SELECT prod_id,sum(stk_qty) as stk_qty
FROM stock GROUP BY prod_id) AS s,product
WHERE s.prod_id=product.prod_id
ORDER BY s.stk_qty DESC
LIMIT 3


(6)查询库存商品销售金额在第三到第六的供货商的信息

SELECT supply.* FROM supply,(SELECT  sup_id,sum(qty * unit_price) as price from sale_item GROUP BY sup_id) AS s
WHERE supply.sup_id=s.sup_id
LIMIT 4 OFFSET 2


(7)查询同一类型产品有两家以上供货商的产品编号以及供货商的数量

SELECT prod_id AS 产品编号,count(stock.sup_id) AS 供货商数量 FROM supply,stock
WHERE supply.sup_id=stock.sup_id
GROUP BY prod_id
HAVING 供货商数量 > 2


(8)统计公司各种产品的销售金额(需要区分不同的厂家)

SELECT prod_name AS 产品名称,qty * unit_price AS 销售金额,sup_name AS 厂家 FROM supply,sale_item,product
WHERE supply.sup_id=sale_item.sup_id AND sale_item.prod_id=product.prod_id


(9)查询公司在96年10月的定单,计算每日定单金额,并按照定单金额排序

SELECT sales.*,sum(qty * unit_price) AS 每日订单金额 FROM sales,sale_item
WHERE sales.order_no=sale_item.order_no AND YEAR(sale_item.order_date)=1996 AND MONTH(sale_item.order_date)=10
GROUP BY sales.order_no
ORDER BY sales.toa_amt


(10)查询一笔销售记录中包含有两条明细记录的销售总帐记录

SELECT sales.* FROM sales
WHERE sales.order_no IN
( 
SELECT sale_item.order_no FROM sale_item
GROUP BY sale_item.order_no
HAVING count(prod_id)=2
);


(11)查询销售总表和销售明细表中不符合参照关系的数据(定单编号为参照字段)。

SELECT sales.* FROM sales
LEFT JOIN (select sale_item.order_no FROM sale_item GROUP BY sale_item.order_no) as s  ON sales.order_no = s.order_no
WHERE s.order_no is NULL


(12)查询每个员工的工资以及应该交纳的个人所得税金额(40000以下不交, 40000---49999 5% 50000—59999 7% 60000以上 10%)

SELECT employee.emp_name AS 姓名,employee.salary AS 工资, 
CASE 
	WHEN employee.salary < 40000 THEN  0
	WHEN employee.salary BETWEEN 40000 AND 49999 THEN (employee.salary-40000)*0.05
	WHEN employee.salary BETWEEN 50000 AND 59999 then (employee.salary-50000)*0.07+9999*0.05
	ELSE (employee.salary-60000)*0.1+9999*0.05+9999*0.07
END AS 个人所得税
FROM employee


(13)生成公司销售的明细表要求表中需要表现的信息为(定单号,销售员姓名,销售产品, 供伙商名称,销售金额)

SELECT sale_item.order_no AS 定单号,employee.emp_name AS 销售员姓名,product.prod_name AS  销售产品, 
supply.sup_name AS 供货商名称,qty * unit_price AS 销售金额
FROM employee,product,supply,sales,sale_item
WHERE sale_item.prod_id=product.prod_id AND supply.sup_id=sale_item.sup_id AND sales.sale_id = employee.emp_no 
AND sales.order_no=sale_item.order_no 


(14)在采购明细表中查询 同类产品在不同时间进货差价超过200元的产品及供货商名称。

SELECT product.* ,supply.sup_name AS 供货商 FROM product,pur_item,supply
WHERE product.prod_id=pur_item.prod_id AND supply.sup_id=pur_item.sup_id
AND  EXISTS
	(SELECT 1 FROM pur_item AS a,pur_item AS b 
		WHERE a.prod_id =b.prod_id AND a.pur_no != b.pur_no AND a.pur_date != b.pur_date AND ABS(a.unit_price - b.unit_price) > 200 
		 and a.prod_id = pur_item.prod_id
	);


(15)查询在同一天进入公司的员工信息

SELECT a.* FROM employee AS a,employee AS b
 WHERE a.date_hired=b.date_hired and a.emp_no != b.emp_no
 ORDER BY a.date_hired


(16)查询公司所有客户在公司的定货情况

SELECT customer.cus_name AS 客户,sales.* FROM customer
LEFT JOIN sales ON customer.cus_id = sales.cus_id


(17)查询由公司女业务员所接回的定单

SELECT sales.* FROM sales,employee
WHERE employee.emp_no=sales.sale_id AND employee.sex = 'F' AND employee.dept = '业务'


(18)查询公司中姓名相同的员工并按照员工编号显示员工信息

SELECT a.* FROM employee AS a,employee AS b
 WHERE left(a.emp_name,1)=left(b.emp_name,1) and a.emp_no != b.emp_no
 GROUP BY a.emp_no ,a.emp_name
 ORDER BY a.emp_no


(19)查询公司中目前业绩还没有超过2万的业务员

SELECT e.* FROM (SELECT * FROM employee WHERE employee.title='职员' and employee.dept='业务') as e
left JOIN (SELECT sales.sale_id,sum(sales.toa_amt) as total FROM sales GROUP BY sales.sale_id ) AS s ON e.emp_no=s.sale_id 
WHERE COALESCE(total ,0)  < 20000


(20)查询仓库中还没有销售过的产品信息

SELECT product.* FROM product
JOIN stock ON product.prod_id=stock.prod_id
WHERE  not  EXISTS 
(
SELECT 1 FROM sale_item
WHERE sale_item.prod_id = stock.prod_id AND sale_item.sup_id = stock.sup_id
)GROUP BY prod_id;


(21)查询没有在公司订购产品的客户名单

SELECT customer.* FROM customer
left JOIN sales on customer.cus_id = sales.cus_id 
WHERE sales.cus_id IS NULL


(22)按照供货商来统计公司的销售榜

SELECT supply.sup_name AS 供货商,sum(qty * unit_price) AS 销售额 FROM supply,sale_item
WHERE supply.sup_id = sale_item.sup_id
GROUP BY supply.sup_name
ORDER BY 销售额 DESC

阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。