一个博友的SQL问题解决过程
环境
DB2 9.1
问题
有两张表,一个产品表,一个价格表,一对多关系(一个产品可以对应多个价格),要求输出结果为 产品 当前有效价格,优惠价格(原价-当前有效价格),不符合关联的条件的记录剔除,并排序。
建表SQL
CREATE TABLE PRODUCT(PRODID INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY, PFORMPRICE DECIMAL(16,2),PDESC VARCHAR(50), PRIMARY KEY(PRODID));
CREATE TABLE PRICE(PRICEID INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY, PRRFNBR INT NOT NULL,PPRE INT NOT NULL,PRICE DECIMAL(16,2),PRIMARY KEY(PRICEID));
INSERT INTO PRODUCT(PFORMPRICE,PDESC) VALUES(10,'PROD1'),(20,'PROD2'),(30,'PROD3');
INSERT INTO PRICE(PRRFNBR,PPRE,PRICE) VALUES(1,1,1),(1,2,3),(1,3,2),(2,1,3),(2,2,2);
说明:
PRODUCT:  PRODUCTID(主键),PFORMPRICE(商品原价),PDESC(商品描述)
PRICE:  PRICEID(主键),PRRFNBR(A表主键),PPRE(价格优先级,此优先级最高的为当前有效价格),PRICE(价格)
数据如下
SELECT * FROM PRODUCT;
------------------------------------------
1 10.00 PROD1
2 20.00 PROD2
3 30.00 PROD3
SELECT * FROM PRICE;
------------------------------------------
1 1 1 1.00
2 1 2 3.00
3 1 3 2.00
4 2 1 3.00
5 2 2 2.00
求解过程
SELECT A.PRODID, A.PFORMPRICE, Z.PRICE, (A.PFORMPRICE - Z.PRICE) AS CJ
  FROM PRODUCT A
 INNER JOIN (SELECT X.*
               FROM PRICE X
              INNER JOIN (SELECT B.PRRFNBR, MAX(B.PPRE) AS TEMP
                           FROM PRICE B
                          GROUP BY B.PRRFNBR) AS Y ON X.PRRFNBR = Y.PRRFNBR
              WHERE X.PPRE = Y.TEMP) AS Z ON A.PRODID = Z.PRRFNBR;
执行结果
--------------------------------------
1 10.00 2.00 8.00
2 20.00 2.00 18.00
从结果可以看出,求解正确。符合要求。
另外,在我完成后,博友给出了他自己的写法:
SELECT PRODID,
       PFORMPRICE,
       (SELECT PRICE
          FROM PRICE A
         WHERE A.PRRFNBR = C.PRODID
           AND PPRE =
               (SELECT MAX(PPRE) FROM PRICE B WHERE B.PRRFNBR = A.PRRFNBR)),
       (PFORMPRICE -
       (SELECT PRICE
           FROM PRICE A
          WHERE A.PRRFNBR = C.PRODID
            AND PPRE =
                (SELECT MAX(PPRE) FROM PRICE B WHERE B.PRRFNBR = A.PRRFNBR)))
  FROM PRODUCT C
--------------------------------------
1 10.00 2.00 8.00
2 20.00 2.00 18.00
3 30.00 [Null] [Null]
本文转自 leizhimin 51CTO博客,原文链接:http://blog.51cto.com/lavasoft/40922,如需转载请自行联系原作者

一个博友的SQL问题解决过程相关推荐

  1. 个人随笔/记录一个博友推荐的截图工具《FSCapture》

    FSCapture 写博文一年多了,都在使用的qq截图,要么就是windows自带的截图工具,但大多数都是用的QQ截图,活生生的把一个聊天工具变成了截图工具,记录生活工具. 啊? 意外出现了. 最近一 ...

  2. sql删除过程的命令是什么_一个删除表字段的自动化执行工单的思考

    工作中经常被吐槽:"不就执行一个删除字段的SQL的自动化工单吗?搞起来有这么复杂?" 那就来梳理梳理这样的一个工单的执行需要什么的流程: 简要流程步骤: 1.   申请权限管控 2 ...

  3. 一个不错的SQL储存过程分页,储存过程+Repeater,如果只是浏览数据的话,快就一个字...

    一个不错的SQL储存过程分页,储存过程+Repeater,如果只是浏览数据的话,快就一个字 CREATE PROCEDURE SelectPagedSQL (  @SQL nvarchar(512), ...

  4. 用友t3服务器不稳定怎么处理,用友T3常见问题解决方法

    用友T3常见问题解决方法 用友T3是我们会计人员常用的一款软件,下面YJBYS小编为大家整理了关于用友T3常见问题解决方法,希望对你有所帮助. 用友T3核销制单出现赤字金额怎么办? 有些客户反应,用友 ...

  5. 实现一个博客系统(前端页面设计)

    博客系统的四个页面展示效果: 注意CSS有一些隐式规定,下面代码的状态:上下边距不是50px(不是两者边距之和,而是他们的最大值);上下边距塌方问题,况且只在垂直方向有,水平方向就是他们的和:况且他的 ...

  6. PHP+JS写一个博客系统

    文章目录 注册和登录界面的完成 注册界面 登录界面 数据库的创建 导入 连接 使用 数据库的连接 验证码的生成 DOACTION 即登录和注册的验证 发表博客 PHP学习完成,随之的实验是结合数据库, ...

  7. 在浏览器输入一个网址到得到页面的过程(详细)

    作为一个软件开发者,你一定会对网络应用如何工作有一个完整的层次化的认知,同样这里也包括这些应用所用到的技术:像浏览器,HTTP,HTML,网络服务器,需求处理等等. 本文将更深入的研究当你输入一个网址 ...

  8. SQL执行过程中的性能负载点

    一.SQL执行过程 1.用户连接数据库,执行SQL语句: 2.先在内存进行内存读,找到了所需数据就直接交给用户工作空间: 3.内存读失败,也就说在内存中没找到支持SQL所需数据,就进行物理读,也就是到 ...

  9. 影像组学视频学习笔记(42)-影像组学特征提取问题解决过程复现、Li‘s have a solution and plan.

    作者:北欧森林 链接:https://www.jianshu.com/p/c3e6de2f79b3 来源:简书,已获转载授权 本笔记来源于B站Up主: 有Li 的影像组学系列教学视频 本节(42)主要 ...

  10. 运用BT在centos下搭建一个博客论坛

    在日常的工作和学习中,我们都很希望有自己的工作站,就是自己的服务器,自己给自己搭建一个博客或者是论坛,用于自己来写博客和搭建网站论坛.现在我们就用一个简单的方法来教大家如何30分钟内部署一个博客网站. ...

最新文章

  1. 【经验分享】TinyMind 多标签图像分类竞赛小试牛刀——by:for the dream
  2. python 学习笔记十九 django深入学习四 cookie,session
  3. 指数分布的期望推导过程
  4. 电商产品评论数据情感分析代码详解
  5. How is component metadata dependency dependencies consumed in the runtime
  6. 基于(7, 5)归零非删余Turbo码的参数识别与分析
  7. 每日站立会议 12.04
  8. OEM XP 让你的盗版xp像品牌机一样华丽
  9. Vue 双向数据绑定原理分析
  10. 制定自己的SMART目标
  11. 【国内首套H3C V7交换机实战课程-1】Comware V7使用、维护与管理-王达-专题视频课程...
  12. matlab泊松分布随机数和图像_常用分布
  13. 如何获取B站视频弹幕?
  14. 启动计算机显示屏没反应,电脑开机后显示器无反应怎么办
  15. 电脑带不动虚幻引擎渲染卡顿怎么办?本文给你支招
  16. 火狐浏览器Firefox 提示错误代码:SSL_ERROR_UNSUPPORTED_VERSION的正确解决方法
  17. 用智能硬件“折叠时间”,外卖商家正在触摸的数字化未来
  18. AspenTech利用ExaGrid实现全球数据备份和恢复策略的现代化
  19. 2020-04-12
  20. scrapy爬取京东笔记本电脑数据并进行简单处理和分析

热门文章

  1. Mysql触发器与事务
  2. WebApplication(Web应用程序)和WebSite(网站)的区别
  3. 一些有趣的404错误设计
  4. Morevec算子特征提取 opencv C++ CSU
  5. linux删除文件密码不奏效,Linux运维知识之linux_无秘登录问题(不生效)
  6. myeclipse导出war包出错Security alert解决办法
  7. 【React Native 安卓开发】----(mac下开发环境配置)【第一篇】
  8. 我们公司使用了 6 年的分布式锁,很是牛逼啊!
  9. Android开发,并不见得是一个走得长远的路子
  10. Go基础-go的源码文件以及常用命令