Oracle表的常用查询实验(七)

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);

第一部分sql基础 9 基本查询语句 9 实验1:书写一个最简单的sql语句,查询一张的所有行和所有列 9 实验2:查询一张的所有行,但列的顺序我们自己决定 10 实验3:查询的某些列,在列上使用达式 10 实验4:使用sqlplus,进入sqlplus并进行简单的操作 11 实验5:查看当前用户的所有和视图 13 实验6:关于null值的问题 15 实验7:在列上起一个别名 15 实验8:在显示的时候去掉重复的行 16 实验9:显示的部分行和部分列,使用where子句过滤出想要的行 18 实验10:使用like查询近似的值 18 实验11:使用order by子句来进行排序操作 20 实验12:操作字符串的函数 22 实验13:操作数字的函数 25 实验14:操作日期的函数 25 实验15:操作数据为null的函数 31 实验16:分支的函数 32 实验17:分组统计函数 33 实验18:的连接查询 36 实验19:sql99规则的连接操作 40 实验20:子查询 41 DDL和DML语句 45 实验21:建立简单的,并对进行简单ddl操作 45 实验22:dml语句,插入删除和修改的数据 49 实验23:事务的概念和事务的控制 52 实验24:在上建立不同类型的约束 54 实验25:序列的概念和使用 58 实验26:建立和使用视图 60 实验27:查询结果的集合操作 63 实验28:高级分组rollup,cube操作 65 实验29:树结构的查询start with子句 66 实验30:高级dml操作 68 第二部分pl/sql基础 69 匿名块的编写 69 实验31:书写一个最简单的块,运行并查看结果 69 实验32:在块中操作变量 70 实验33:在块中操作的数据 71 实验34:在块中的分支操作if语句 71 实验35:在块中使用循环,三种循环模式 72 实验36:在块中自定义数据类型,使用复合变量 73 实验37:在块中使用自定义游标 76 实验38:在块中处理错误exception 78 编写程序 80 实验39:触发器 80 实验40:编写函数 82 实验41:编写存储过程 83 实验42:编写包package 85 第三部分数据库的体系结构 88 实例的维护 88 实验43:数据库的最高帐号sys的操作系统认证模式 90 实验44:数据库的最高帐号sys的密码文件认证模式 92 实验45:数据库的两种初始化参数文件 92 实验46:启动数据库的三个台阶nomount,mount,open 95 实验47:停止数据库的四种模式 96 实验48:建立数据库 97 实验49:查找你想要的数据字典 99 控制文件 99 实验50:减少控制文件的个数 100 实验51:增加控制文件的个数 101 日志文件 104 实验52:日志文件管理和nologging的实现 107 数据文件 111 实验53:建立新的空间 111 实验54:更改空间的名称,更改数据文件的名称 113 空间 116 实验55:建立临时空间 117 实验56:大文件空间和空间的管理模式 118 数据库的逻辑结构 120 实验57:建立,描述的存储属性 121 实验58:数据库范围extent的管理 128 undo段的管理 134 实验59:数据库自动回退段的管理 135 实验60:数据库手工回退段的管理 136 实验61:通过回退段闪回历史数据 136 实验62:闪回数据的查询方法,以及历史交易 137 —存储数据的最基本单元 138 实验63:rowid的使用 138 实验64:临时和压缩数据的使用 141 实验65:压缩存储数据 142 实验66:删除中指定列操作 142 实验67:使用sqlldr加载外部的数据 143 实验68:使用utl_file包来将的数据存储到外部文件 144 实验69:使用外部 145 实验70:处理挂起的事务 146 索引 149 实验71:查看索引的内部信息 151 实验72:监控索引的使用状态 153 约束的管理 154 实验73:改变约束的状态 154 实验74:找到违反约束条件的行 155 Profile配置 156 实验75:管理密码的安全配置 156 实验76:限制会话的资源配置 157 权限管理 158 实验77:维护系统权限 158 实验78:维护对象权限 159 实验79:维护角色 160 实验80:审计 161 数据库字符集 162 实验81:配置国家语言支持 163 元数据 165 实验82:提取元数据dbms_metedata 165 第四部分数据库的网络配置 168 实验83:配置监听 168 实验84:客户端的网络配置 169 实验85:数据库共享连接的配置 171 实验86:数据库dblink 173 第五部分数据库的备份和恢复 174 Exp导出和imp导入 174 实验87:交互模式导出和导入数据 174 实验88:命令行模式导出和导入数据 175 实验89:参数文件模式导出和导入数据 175 实验90:导出和导入的操作 176 实验91:导出和导入用户操作 178 实验92:导出和导入全数据库操作 179 实验93:导出和导入空间操作 179 实验94:数据泵 179 冷备份 180 实验95:将冷备份恢复到其它目录 181 实验96:修改实例的名称 181 实验97:将冷备份恢复到其它主机 181 实验98:将数据库改为归档数据库 182 热备份 182 实验99:热备份数据文件 184 实验100:热备份控制文件 186 实验101:改变控制文件大大小 186 实验102:改变数据库的名称 187 实验103:使用老的控制文件进行数据库恢复 187 实验104:系统空间损坏的恢复 187 实验105:非系统空间损坏的恢复 188 实验106:索引空间损坏的恢复 193 实验107:临时空间损坏的恢复 195 实验108:无备份空间损坏的恢复 195 实验109:日志挖掘 198 实验110:不完全恢复,删除的恢复 199 实验111:不完全恢复,删除空间的恢复 199 实验112:不完全恢复,当前日志损坏的恢复 199 实验113:不完全恢复,resetlogs后的再次恢复 203 实验114:空间的传送 203 实验115:整个数据库的闪回 203 Rman备份和恢复 204 实验116:rman的连接,report和list命令 204 实验117:rman的copy命令 205 实验118:rman的backup命令 206 实验119:rman的backup备份增量级别 206 实验120:rman的backup备份片大小的限制 209 实验121:rman的backup备份数据文件 211 实验122:rman的backup备份控制文件 211 实验123:rman的backup备份归档日志文件 211 实验124:rman的backup备份二进制参数文件 212 实验125:rman的恢复目录的配置 212 实验126:rman的数据文件的恢复 212 实验127:rman的数据块完全恢复 213 实验128:rman的数据库不完全恢复 214 实验129:rman的数据库副本管理 214 实验130:rman的备份管理 214 第六部分数据库的优化 216 采集数据 216 实验131:优化工具utlbstat/utlestat的使用 216 实验132:优化工具spreport的使用 217 实验133:系统包dbms_job维护作业 217 Shared_pool 219 实验134:sql语句在shared_pool中的查询 219 实验135:shared_pool的sql命中率 220 实验136:数据字典的命中率查询 223 实验137:shared_pool保留区的判断 223 其它内存优化 224 实验138:db_cache命中率和db_cache的细化管理 224 实验139: v$latch的使用 225 实验140:log_buffer的优化 227 实验141:pga的优化 227 不同的存储格式 229 实验142:OMF管理的文件 229 实验143:处理行迁移 230 实验144:lock的信息查询 231 SQL语句的优化 234 实验145:explain列出执行计划 234 实验146:跟踪sql语句的使用 235 实验147:AUTOTRACE的使用 235 实验148:定位高消耗资源语句 236 实验149:收集数据库的统计信息 236 实验150:收集列的统计信息 238 实验151:自动收集统计信息 239 数据库的不同访问模式 240 实验152:全扫描的优化 240 实验153:索引的五种使用模式 242 实验154:连接的三种模式 246 实验155:联合索引的建立 247 实验156:基于函数索引的建立 249 实验157:位图索引的建立 249 实验158:反键索引的建立 252 实验159:索引组织的建立 253 实验160:cluster的建立 253 实验161:物化视图的建立 253 实验162:查询重写 255 实验163:最后的sql优化办法,使用hints
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值