首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

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

2011-12-23 
马士兵视频中一道关于sql的题,有点难度,请高手求解题目:用sql语句完成下列1,2题,至于测试的时候在什么数据

马士兵视频中一道关于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)) 

热点排行