当前位置: 代码迷 >> Oracle管理 >> 马战士视频中一道关于sql的题,有点难度,请高手求解
  详细解决方案

马战士视频中一道关于sql的题,有点难度,请高手求解

热度:240   发布时间:2016-04-24 06:19:32.0
马士兵视频中一道关于sql的题,有点难度,请高手求解
题目:用sql语句完成下列1,2题,至于测试的时候在什么数据库中都可以
Table product1;
产品productName1 颜色color1 数量num1

  产品1 红 133
  产品1 蓝 126
  产品2 蓝 103
  产品2 红 null
  产品2 红 89
  产品1 红 203

1.按产品分类仅列出各类商品中红色多于蓝色的商品名称及差额数量

2.按产品分类,将数据按如下方式进行统计显示

  产品productName2 红色rednum 蓝色bluenum
  产品1 1500 1298
  .........



------解决方案--------------------
SQL code
--1select productName1,color1,       sum(decode(color1,'红',1,0))-sum(decode(color1,'蓝',1,0)) num_  from product1 group by productName1,color1 having sum(decode(color1,'红',1,0)) > sum(decode(color1,'蓝',1,0)); --2select productName1,       sum(decode(color1,'红',1,0)) 红色rednum ,       sum(decode(color1,'蓝',1,0)) 蓝色bluenum  from product1 group by productName1;
------解决方案--------------------
探讨
非常感谢一楼,但是你的那个1好像只是记录条数而没有涉及到产品的数量,另外那个null值在decode中是怎么处理的?

------解决方案--------------------
SQL code
select productName1,color1,    sum(decode(color1,'红',nvl(num1,0),0))-sum(decode(color1,'蓝',nvl(num1,0),0)) num_from product1group by productName1,color1having sum(decode(color1,'红',nvl(num1,0),0)) > sum(decode(color1,'蓝',nvl(num1,0),0))
  相关解决方案