在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

数据库中PARTITION BY分组怎么用

158次阅读
没有评论

共计 3657 个字符,预计需要花费 10 分钟才能阅读完成。

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

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-20发表,共计3657字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 久久99爱爱 | 亚洲欧美一级久久精品 | 国产美女亚洲精品久久久毛片 | 日韩欧美亚洲国产高清在线 | 四虎影视在线免费观看 | 吃奶呻吟打开双腿做受视频 | 中文无码人妻有码人妻中文字幕 | 无码av最新无码av专区 | 国产美女免费国产 | 无码人妻一区二区三区免费n鬼沢 | 成 人 a v免费视频在线观看 | 国产呦精品一区二区三区网站 | 一级毛片a免费播放王色 | 精品综合久久久久久98 | 亚洲国产成人久久综合一区 | 久草视频免费在线 | 成人国产一区二区三区精品 | 中文字幕一区二区三区四区五区人 | 亚洲精品久久久久久久久久吃药 | 欧美精品久久久久久久自慰 | 日日夜夜网站 | 国产成人在线播放视频 | 国产精成人品日日拍夜夜免费 | 亚洲乱码中文字幕久久孕妇黑人 | 美女的隐私视频网站蜜桃视频 | 成年美女毛片黄网站色奶头大全 | 精品国产美女 | 国产一区二区三区四区在线 | 国产成人亚洲综合小说区 | 亚洲码国产精品高潮在线 | 精品无码av无码免费专区 | 欧美一级艳片视频免费观看 | 一区二区三区国产美女在线播放 | 国产精品熟妇视频国产偷人 | 国产目拍亚洲精品一区二区三区 | 亚洲精品老司机 | 2021国产成人综合亚洲精品 | 影音先锋2020色资源网 | 99re6在线精品视频免费播放 | 最近中文字幕在线中文视频 | 97久久久久国产精品嫩草影院 |