Oracle表的常用查询实验(七)
1.问题描述:
有一个商品信息表,该表反应了各种商品的销售情况,一个产品是按照gid和gname两个字段来区分的,一个产品可能会有多个型号。
createtableT_Goods
(
Idintprimarykey,
GIdvarchar2(10)notnull,
GNamevarchar2(20)notnull,
GColourvarchar2(10),
GWithinint,
GSizevarchar2(10),
GNumberint
)
CREATESEQUENCEseq_goods
INCREMENTBY1
STARTWITH1
NOMAXVALUE
NOCYCLE
CACHE10;
现要将各种商品各种型号的销售情况进行汇总统计,达到如下效果:
2.需求分析:
分类统计--->说明要用到group by 和sum()函数
group by 分两种情况:(1)group by GId, gname, gcolour, gwithin, gsize 得到的是每种型号的销售量
(2)group by gid, gname 得到的是每种产品的销售量
3.解答过程:
(1)求每种型号的销售量
(2)求每种产品的销售量
(3)求商品的总销售量
(4)将以上3个结果集联合在一起
(5)用decode()函数精简gid和gname,用row_number() over(partition by ) 函数来排序
4.SQL代码:
select rownum seq,
decode(rn, 1, gid) gid,
decode(rn, 1, gname) gname,
gcolour,
gwithin,
gsize,
gnumber
from (select t.*, row_number() over(partition by gid,gname order by gnumber) rn
from (select GId,
gname,
gcolour,
gwithin,
gsize,
sum(gnumber) gnumber
from t_goods
group by GId, gname, gcolour, gwithin, gsize
union all
select gid, gname, null, null, '小计', sum(gnumber)
from t_goods
group by gid, gname
union all
select null, null, null, null, '总计', sum(gnumber)
from t_goods) t);
本文详细介绍了如何使用Oracle SQL进行商品信息表的查询,包括按型号和产品分类统计销售情况,并通过group by 和 sum() 函数实现销售量的汇总。同时,文章还展示了如何将不同级别的统计结果联合输出,以及使用decode()和row_number()over()函数进行数据处理和排序。
2225

被折叠的 条评论
为什么被折叠?



