数据库的组合查询和统计查询

已知GCGL数据库包括S、P、J、SPJ这4个关系:

S(SNO,SNAME,STATUS,CITY)

供应商(供应商代码,供应商姓名,供应商状态,供应商所在城市);

P(PNO,PNAME,COLOR,WEIGHT)

零件(零件代码,零件名,颜色,重量);

J(JNO,JNAME,CITY)

工程项目(工程项目代码,工程项目名,项目所在城市);

SPJ(SNO,PNO,JNO,QIY)

供应情况(供应商代码,零件代码,工程项目代码,供应数量)。

一、基本操作

(1)查询P2零件供应的总数;

SELECT PNO,SUM(QTY)

FROM SPJ

WHERE PNO="P2";

(2)查询每个工程有几个供应商在向它供应零件;

SELECT COUNT( DISTINCT SNO)  AS 总供应商个数,JNO 

FROM SPJ

(3)查询每个供应商供应零件的总数,给出供应商编号和总数;

SELECT SNO,SUM(QTY) AS 总量

FROM SPJ

(4)查询每个城市供应商的数量;

SELECT CITY,COUNT(CITY) AS 供应商数量 

FROM S

(5)查询每个城市工程的数量;

SELECT CITY, COUNT(CITY) AS 工程数量

FROM J

(6)查询现已接受供应的工程总数;

SELECT COUNT( DISTINCT JNO)

FROM SPJ

(7)查询向3个以上工程供应零件的供应商编号;

SELECT SNO,COUNT(JNO)  AS 工程供应零件个数

FROM SPJ

HAVING COUNT(JNO)>3

(8)查询接受3家以上供应商供应零件的工程编号;

SELECT JNO,COUNT(SNO) AS 供应商供应零件个数

FROM SPJ

HAVING COUNT(SNO)>3

(9)查询每种零件有几种颜色;

SELECT PNO,COUNT(COLOR)

FROM P

(10)查询总供应量在1000以上的供应商的编号和总供应量;

SELECT SNO,SUM(QTY)

FROM SPJ

WHERE SUM(QTY)>1000

二、提高操作

(1)查询每个城市的工程接受零件的供应量;

SELECT J.CITY,SUM(SPJ.QTY)

FROM J,QTY

WHERE J.JNO=SPJ.JNO

(2)查询每种零件的供应信息,包括零件代码、零件名、颜色、重量和供应总量;

SELECT P.*,SUM(SPJ.QTY) AS 供应总量

FROM P,SPJ

WHERE P.PNO=SPJ.PNO

(3)查询每个供应商的供应信息,包括供应商代码、供应商名、所在城市和供应总量;

SELECT S.SNO,SNAME,CITY,SUM(SPJ.QTY) AS 供应总量

FROM S,SPJ

WHERE S.PNO=SPJ.PNO

(4)查询供应总量在1000以上的供应商信息,包括供应商基本信息和供应总量;

SELECT S.SNO,SNAME,,STATUS,CITY,SUM(SPJ.QTY) AS 供应总量

FROM S,SPJ

WHERE S.PNO=SPJ.PNO

AND SUM(SPJ.QTY)>1000

(5)查询每种颜色的零件的供应总量;

SELECT P.COLOR,SUM(SPJ.QTY) AS 供应总量

FROM P,SPJ

WHERE P.PNO=SPJ.PNO

(6)查询每个城市供应商供应零件的总数;

SELECT S.CITY,SUM(SPJ.QTY) AS 供应总量

FROM S,SPJ

WHERE S.PNO=SPJ.PNO

(7)查询供应商和工程在同一个城市的工程的基本信息和供应信息;

SELECT S.*,J.*

FROM S,J

WHERE S.CITY=J.CITY

(8)查询没有使用天津产的零件的工程号码JNO;

SELECT JNO

FROM J

WHERE J.CITY!="天津"

(9)查询使用上海厂商供应的所有零件号码;

SELECT SPJ.PNO

FROM S,SPJ

WHERE S.CITY="上海"

AND S.SNO=SPJ.SNO

(10)找出工程项目J2使用的各种零件的名称及其数量。

SELECT P.PNAME,SPJ.QTY

FROM SPJ,P

WHERE SPJ.JNO="J2"

AND SPJ.PNO=P.PNO

  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值