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