(自连接)SQL面试题-0608

来源:互联网 发布:淘宝的外卖叫什么 编辑:程序博客网 时间:2024/06/09 15:41
一个简单的表TABLE 有100条以上的信息,其中包括:

产品         颜色             数量
产品1         红色             123
产品1         蓝色             126
产品2         蓝色             103
产品2         红色             NULL
产品2         红色             89
产品1         红色             203


请用SQL语句完成以下问题:


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


2。按产品分类,将数据按下列方式进行统计显示
      产品         红色           蓝色

create table test0608(产品 varchar(10),颜色 varchar(10),数量 int);insert into test0608 values ('产品1', '红色', 123);insert into test0608 values ('产品1', '蓝色', 126);insert into test0608 values ('产品2', '蓝色', 103);insert into test0608 values ('产品2', '红色', NULL);insert into test0608 values ('产品2', '红色', 89);insert into test0608 values ('产品1', '红色', 203);select * from test0608;select 产品, 红色, 蓝色, 红色 - 蓝色 差额  from (select a1.产品, a1.红色, b1.蓝色          from (select 产品, 颜色, 红色          from (select 产品, 颜色, sum(数量) 红色                  from test0608                 group by 产品, 颜色) a         where a.颜色 = '红色' ) a1          join (select 产品, 颜色, 蓝色          from (select 产品, 颜色, sum(数量) 蓝色                  from test0608                 group by 产品, 颜色) b         where b.颜色 = '蓝色' ) b1 on a1.产品 = b1.产品) c where 红色 > 蓝色;select a1.产品, a1.红色, b1.蓝色  from (select 产品, 颜色, 红色  from (select 产品, 颜色, sum(数量) 红色 from test0608 group by 产品, 颜色) a where a.颜色 = '红色' ) a1  join (select 产品, 颜色, 蓝色  from (select 产品, 颜色, sum(数量) 蓝色 from test0608 group by 产品, 颜色) b where b.颜色 = '蓝色' ) b1 on a1.产品 = b1.产品;


原创粉丝点击