返回顶部
首页 > 资讯 > 数据库 >数据库中PARTITION BY分组怎么用
  • 364
分享到

数据库中PARTITION BY分组怎么用

2024-04-02 19:04:59 364人浏览 独家记忆
摘要

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

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

您可能感兴趣的文档:

--结束END--

本文标题: 数据库中PARTITION BY分组怎么用

本文链接: https://lsjlt.com/news/65031.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 数据库中PARTITION BY分组怎么用
    小编给大家分享一下数据库中PARTITION BY分组怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!我在自己的SCHEMA...
    99+
    2024-04-02
  • 数据库中group by怎么用
    这篇文章将为大家详细讲解有关数据库中group by怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一.  概述group_by的意思是根据by对数据按照哪个字段进行分组,或者是哪...
    99+
    2023-06-22
  • 数据库中的group by怎么使用
    在数据库中,GROUP BY子句用于根据一个或多个列对结果进行分组。它常用于与聚合函数一起使用,以便对每个组应用聚合函数。语法如下:...
    99+
    2023-08-30
    数据库
  • SQLServer中Partition By及row_number函数的使用
    这篇文章运用简单易懂的例子给大家介绍SQLServer中Partition By及row_number函数的使用,代码非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。partition &nb...
    99+
    2024-04-02
  • MySQL5.7 实现类似 MySQL8.0 中 row_number() over(partition by ... order by ...) 函数的分组排序编号效果
    示例 现在这里有一张用户表 user,里面包含以下字段:ID 主键、USERNAME 用户名、PASSWORD 密码、COMPANY 公司、DEPT 部门、CREATE_TIME 创建时间。 IDUS...
    99+
    2023-09-24
    数据库 sql mysql
  • MySQL数据库分组查询group by语句详解
    一:分组函数的语句顺序 1 SELECT ... 2 FROM ... 3 WHERE ... 4 GROUP BY ...
    99+
    2024-04-02
  • SQLServer中如何使用Partition By和row_number 函数
    这期内容当中小编将会给大家带来有关SQLServer中如何使用Partition By和row_number 函数,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。首先呢我把...
    99+
    2024-04-02
  • MySQL入门 - 数据分组之 group by
    作者:汤圆学Java 个人博客:https://www.javalover.cc/ 前言 group by 用来对数据进行分组,即按照指定的字段或者表达式进行分组; 目录 group by 语句介绍...
    99+
    2023-09-08
    mysql 数据库 sql
  • 数据库中group by的用法是什么
    本篇内容介绍了“数据库中group by的用法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前段时间...
    99+
    2024-04-02
  • group by聚合分组后如何获取分组数据
    之前用group by分组后一直困惑怎么把分组后的数据拿到,因为分组后同一组的只有一条数据,最后发现了group_concat函数。记录一下,以后能用。 语法:group_concat( [distinct] 要连接的字段 [o...
    99+
    2023-09-23
    数据库 mysql Powered by 金山文档
  • SQL 入门教程:数据分组(GROUP BY)
    目录创建分组请参阅 目录汇总:SQL 入门教程:面向萌新小白的零基础入门教程 从 聚集函数 得知,使用 SQL 聚集函数可以汇总数据。这样,我们就能够对行进行计数,计算和与平均数,不检索所有数据就获得最大值和最小值。 目前为止的所有计算都...
    99+
    2020-02-12
    SQL 入门教程:数据分组(GROUP BY)
  • 数据库分组查询语句怎么使用
    在数据库中使用分组查询语句可以对数据进行分组并对每个分组进行聚合操作。常用的分组查询语句是使用SELECT语句结合GROUP...
    99+
    2023-09-15
    数据库
  • Oracle怎么查询Interval partition分区表内数据
    本篇内容介绍了“Oracle怎么查询Interval partition分区表内数据”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家...
    99+
    2024-04-02
  • php数组怎么添加数据库中
    在PHP编程语言中,将数组添加到数据库中是一种非常常见的操作。在实际的应用程序中,您可能需要从数组中提取数据,并将其插入到数据库中,以便进行后续的查询或分析。在这篇文章中,我们将讨论如何使用PHP将数组添加到数据库中。首先,我们将探讨如何将...
    99+
    2023-05-23
  • MySQL group by后取每个分组中最新一条数据
    一、需求 MySQL group by后取每个分组中最新一条数据 二、实现 1)方案1:使用min()和max()方法 group by后取每个分组中最新一条数据 SELECT MAX(test_id) FROM test GROU...
    99+
    2023-09-02
    mysql 数据库 sql
  • MySQL数据库:group分组
    group by:分组 GroupBy语句从英文的字面意义上理解就是“根据(by)一定的规则进行分组(Group)”。它的作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对若干个小区域进行数据处理。 # group by 字段名...
    99+
    2019-11-16
    MySQL数据库:group分组
  • Linq数据分组怎么使用
    本篇内容主要讲解“Linq数据分组怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linq数据分组怎么使用”吧!Linq数据分组(GROUP BY)根据元素的一个或多个字段对查询结果中的元...
    99+
    2023-06-17
  • SQL:用count求group by分组的个数
    1、求每一分组内的个数 查询选修了全部课程的学生姓名 思路 查询一个学生的姓名,该学生选修课的门数等于所有课程的门数 逆推:查询一个学生的姓名,姓名怎么来?通过Student的学...
    99+
    2023-08-31
    sql 数据库 mysql
  • Oracle数据库中如何使用GROUP BY子句
    Oracle数据库中如何使用GROUP BY子句,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Oracle数据库中GROUP BY子句的使用:...
    99+
    2024-04-02
  • 如何在数据库中使用group by方法
    今天就跟大家聊聊有关如何在数据库中使用group by方法,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Group By概念Group By语句从英...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作