千家信息网

数据库中PARTITION BY分组怎么用

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,小编给大家分享一下数据库中PARTITION BY分组怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!我在自己的SCH
千家信息网最后更新 2025年11月07日数据库中PARTITION BY分组怎么用

小编给大家分享一下数据库中PARTITION BY分组怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

我在自己的SCHEMA下定义了三个表并填入数据:客户表(plch_customer),产品表(plch_product),销售表(plch_sales)

CREATE TABLE plch_customer (

cust_id INTEGER PRIMARY KEY

, cust_name VARCHAR2(100)

)

/

BEGIN

INSERT INTO plch_customer VALUES (100, 'Customer A');

INSERT INTO plch_customer VALUES (200, 'Customer B');

INSERT INTO plch_customer VALUES (300, 'Customer C');

INSERT INTO plch_customer VALUES (400, 'Customer D');

COMMIT;

END;

/

CREATE TABLE plch_product (

prod_id INTEGER PRIMARY KEY

, prod_name VARCHAR2(100)

)

/

BEGIN

INSERT INTO plch_product VALUES (10,'Mouse');

INSERT INTO plch_product VALUES (20,'Keyboard');

INSERT INTO plch_product VALUES (30,'Monitor');

COMMIT;

END;

/

CREATE TABLE plch_sales (

cust_id INTEGER NOT NULL

, prod_id INTEGER NOT NULL

, quantity NUMBER NOT NULL

)

/

BEGIN

INSERT INTO plch_sales VALUES (100, 10, 500);

INSERT INTO plch_sales VALUES (100, 10, 800);

INSERT INTO plch_sales VALUES (100, 20, 600);

INSERT INTO plch_sales VALUES (200, 10, 400);

INSERT INTO plch_sales VALUES (200, 20, 300);

INSERT INTO plch_sales VALUES (200, 20, 700);

INSERT INTO plch_sales VALUES (300, 10, 100);

INSERT INTO plch_sales VALUES (300, 10, 200);

INSERT INTO plch_sales VALUES (300, 10, 900);

COMMIT;

END;

/

我们想要一个清单,显示每种产品卖给每位客户的总数量,并有如下需求:

一种产品当且仅当卖给至少一个客户时才出现在清单中。

对于清单中出现的产品,售予plch_customer表中的每位客户的数量都要显示,如果某客户没有购买该产品则显示0。

输出如下:

CUST_ID PROD_ID TOTAL

------------- ------------- -------------

100 10 1300

100 20 600

200 10 400

200 20 1000

300 10 1200

300 20 0

400 10 0

400 20 0

下列的哪些语句正确实现了这个需求?

(A)

SELECT s.cust_id cust_id,

s.prod_id prod_id,

SUM(s.quantity) total

FROM plch_sales s

GROUP BY

s.cust_id,

s.prod_id

UNION ALL

SELECT c.cust_id cust_id,

p.prod_id prod_id,

0 total

FROM plch_customer c,

( SELECT DISTINCT s.prod_id

FROM plch_sales s ) p

WHERE NOT EXISTS

( SELECT '1'

FROM plch_sales s2

WHERE s2.cust_id = c.cust_id

AND s2.prod_id = p.prod_id )

ORDER BY cust_id, prod_id

/

(B)

SELECT c.cust_id,

s.prod_id,

NVL(SUM(s.quantity),0) total

FROM test.plch_sales s

PARTITION BY (s.prod_id)

RIGHT OUTER JOIN test.plch_customer c

ON ( c.cust_id = s.cust_id )

GROUP BY

c.cust_id,

s.prod_id

ORDER BY

c.cust_id,

s.prod_id

/

(C)

SELECT c.cust_id,

s.prod_id,

NVL(SUM(s.quantity),0) total

FROM plch_sales s

PARTITION BY (s.prod_id)

LEFT OUTER JOIN plch_customer c

ON ( c.cust_id = s.cust_id )

GROUP BY

c.cust_id,

s.prod_id

ORDER BY

c.cust_id,

s.prod_id

/

(D)

SELECT c.cust_id,

s.prod_id,

NVL(SUM(s.quantity),0) total

FROM plch_customer c

LEFT OUTER JOIN plch_sales s

PARTITION BY (s.prod_id)

ON ( c.cust_id = s.cust_id )

GROUP BY

c.cust_id,

s.prod_id

ORDER BY

c.cust_id,

s.prod_id

/

(E)

SELECT c.cust_id,

p.prod_id,

NVL(SUM(s.quantity),0) total

FROM

plch_customer c

CROSS JOIN plch_product p

LEFT OUTER JOIN plch_sales s

ON ( s.cust_id = c.cust_id

AND s.prod_id = p.prod_id

)

GROUP BY

c.cust_id,

p.prod_id

ORDER BY

c.cust_id,

p.prod_id

/

(F)

SELECT s.cust_id,

p.prod_id,

NVL(SUM(s.quantity),0) total

FROM

plch_product p

LEFT OUTER JOIN plch_sales s

ON ( s.prod_id = p.prod_id )

GROUP BY

s.cust_id,

p.prod_id

ORDER BY

s.cust_id,

p.prod_id

/

(G)

SELECT c.cust_id,

s.prod_id,

NVL(SUM(s.quantity),0) total

FROM

plch_customer c

LEFT OUTER JOIN plch_sales s

ON ( s.cust_id = c.cust_id )

GROUP BY

c.cust_id,

s.prod_id

ORDER BY

c.cust_id,

s.prod_id

/

(H)

SELECT c.cust_id,

p.prod_id,

NVL(SUM(s.quantity),0) total

FROM

plch_customer c

CROSS JOIN (SELECT DISTINCT prod_id

FROM plch_sales) p

LEFT OUTER JOIN plch_sales s

ON ( s.cust_id = c.cust_id

AND s.prod_id = p.prod_id

)

GROUP BY

c.cust_id,

p.prod_id

ORDER BY

c.cust_id,

p.prod_id

/

以上是"数据库中PARTITION BY分组怎么用"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

产品 客户 数据 清单 篇文章 数据库 分组 内容 数量 需求 三个 不怎么 大部分 并有 更多 知识 行业 语句 资讯 资讯频道 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 青海惠普服务器维修调试哪家好 网络安全法 电子信息发送 安庆心宇信息网络技术有限公司 安徽专科计算网络技术 路由器wan口设置服务器无响应 e4a怎么连接易语言服务器 曙光服务器 带外管理 网络安全考研好考 数据库并发事务 手机怎么看备用dns服务器 娄底找软件开发工作 数据库表主键自增 网络安全保障业务指导书 网络安全思想汇报300字 wind数据库免费版最新正式版 未来网络安全市场空间 高科技计算机网络技术销售公司 网络安全活动主题活动方案 数据库技术与应用期末考试 ktv服务器怎么更换机顶盒 2021年网络安全教育视频 小程序开发要服务器吗 对信息网络安全的理解 h1z1北美服务器节点 网络安全设备巡检方案 医疗大数据数据库 电信与互联网行业网络安全年会 太原市第一届网络安全大赛 oracle数据库cdc用户 扬职大计算机网络技术专业
0