我的编程空间,编程开发者的网络收藏夹
学习永远不晚

数据库中PARTITION BY分组怎么用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

数据库中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分组怎么用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

数据库中PARTITION BY分组怎么用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

数据库中group by怎么用

这篇文章将为大家详细讲解有关数据库中group by怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一. 概述group_by的意思是根据by对数据按照哪个字段进行分组,或者是哪几个字段进行分组。二
2023-06-22

数据库中的group by怎么使用

在数据库中,GROUP BY子句用于根据一个或多个列对结果进行分组。它常用于与聚合函数一起使用,以便对每个组应用聚合函数。语法如下:```SELECT 列1, 列2, ... 列nFROM 表名WHERE 条件GROUP BY 列1, 列2
2023-08-30

数据库分组查询语句怎么使用

在数据库中使用分组查询语句可以对数据进行分组并对每个分组进行聚合操作。常用的分组查询语句是使用SELECT语句结合GROUP BY和聚合函数来实现的。以下是使用分组查询语句的基本步骤:1. 使用SELECT语句选择需要查询的字段。2. 在F
2023-09-15

Linq数据分组怎么使用

本篇内容主要讲解“Linq数据分组怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linq数据分组怎么使用”吧!Linq数据分组(GROUP BY)根据元素的一个或多个字段对查询结果中的元
2023-06-17

mysql中order by和分组能一起使用么

是的,mysql 允许在分组查询中使用 order by 子句排序结果,步骤如下:分组数据(group by)聚合数据(使用聚合函数)排序结果(order by)MySQL 中 ORDER BY 与分组查询的结合使用是的,MySQL 允许
mysql中order by和分组能一起使用么
2024-05-09

MySQL数据库Group by分组之后再统计数目Count(*)与不分组直接统计数目的区别

简述问题“统计最新时刻处于某一状态的设备的数量”1. 首先子查询结果,可以看到每个设备最新的状态信息     2.1 在子查询的基础上,对设备状态进行分组,进行统计每个状态的设备数量 2.1.1 可以看到处于"火警"状态的数量是2,没有问题,但是看下一张图  
MySQL数据库Group by分组之后再统计数目Count(*)与不分组直接统计数目的区别
2014-09-06

怎么用数据库中间件Mycat+SpringBoot完成分库分表

这篇文章主要讲解了“怎么用数据库中间件Mycat+SpringBoot完成分库分表”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用数据库中间件Mycat+SpringBoot完成分库分表
2023-06-16

Mysql数据库中的分库分表怎么利用MyBatis来实现

本篇文章给大家分享的是有关Mysql数据库中的分库分表怎么利用MyBatis来实现,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。MyBatis实现分表最简单步骤1、我们模拟用户
2023-05-31

编程热搜

目录