一道SQL子查询的题目,在线等,请帮忙~谢谢~~

来源:百度知道 编辑:UC知道 时间:2024/06/24 18:46:05
有这样3个表
Store(Pno, Pname, Ptype, Pnum)库存(零件号,零件名称,零件类别,零件数量)
Pno Pname Ptype Pnum
P1 齿轮 传动 200
P2 蜗杆 传动 30
P3 螺栓 标准 120
P4 垫圈 标准 500
P5 螺母 标准 1020

Orders (Ono, Cno, Pno, Onum, Osum, Odate)订单(订单号,顾客号,定购零件号,定购数量,订单金额,签订日期)
Ono Cno Pno Onum Osum Odate
O1 C2 P2 100 1000 2006-4-8
O2 C3 P3 10 100 2008-5-2
O3 C1 P2 20 200 2007-4-5
O4 C1 P4 2 20 2009-2-4
O5 C3 P5 1 10 2009-3-1

Customer (Cno, Cname, Ctel, Caddr, Czip)顾客(顾客号,顾客名称,电话,地址,邮编)
cno Cname Ctel Caddr Czip
C1 北京联合大学 010-64900310 北京 100101
C2 上海贝尔 021-23232323 上海
C3 LG 0755-2325123 深圳 412100
C4 华为(北京) 北京
C5 香港航空 852-56545236 香港 142553

现有几个查询:
1、统计每个顾客签订订单的次数;
2、查询所有顾客签订订单的情况(包括没有签订订单的顾客);
3、查询没有卖过一次的零件号(没有订单);
4、查询所有订单金额的平均值;
5、查询至少签订过两次订单的顾客信息。

请帮忙,谢谢~~

1.SELECT Cno,COUNT(Ono) AS '订单总合'
FROM Orders
GROUP BY Cno
2. SELECT TA.*,TB.TotalOno
FROM Customer AS TA
LEFT JOIN (
SELECT Cno,COUNT(Ono) AS TotalOno
FROM Orders
GROUP BY Cno
)AS TB
ON TA.Cno = TB.Cno

3.SELECT *
FROM Store
WHERE NOT EXISTS
(
SELECT 1 FROM Orders
WHERE Store.Pno = Orders.Pno
)
4.SELECT AVG(Osum) AS '订单平均金额'
FROM Orders

5.SELECT Cno,COUNT(Ono) AS '订单总合'
FROM Orders
GROUP BY Cno
HAVING COUNT(Ono)>=2