(自连接)SQL面试题-0608

一个简单的表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.产品;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

于大大大洋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值