这是一个创建于 3456 天前的主题,其中的信息可能已经有所发展或是发生改变。
- 用两种不同的连接写法,实现一条SQL查询出每个部门的员工数量(涉及到SCOTT用户下的EMP表和DEPT表。注意from a, b 和 from a join b 视为同一种写法,(+)和left/right join也视为一种写法)
某省电信公司需要做一个关于年龄段和所购买套餐额度范围的一个统计,该电信业务有大约三千万用户在使用,该公司有一张物化视图MV_USER_PKG,记录着每个用户的user_name(用户名,字符串)、user_age(年龄,整数)、curr_pkg_amt(当前套餐金额,整数,范围50~500),具体统计需求为显示:
- 年龄大于等于30岁,套餐金额大于等于150元的用户数量;
- 年龄大于等于30岁,套餐金额小于150元的用户数量;
- 年龄小于30岁,套餐金额大于等于150元的用户数量;
- 年龄小于30岁,套餐金额小于150元的用户数量;
- 以上四项在一行中显示,用一条SQL完成,提示,可用case when语句;
- 尽可能让你的SQL性能好。
查出大小超过1GB(按1024^3字节算)的表和索引,假定大小超过1G的表和索引均超过五个(DBA_SEGMENTS视图):
- 一条SQL实现按大小倒序排序,输出前十个段的所有者、段类型、段名称和段的大小(以GB为单位)
- 一条SQL实现按段类型分组,取出每个分组内的前五名的段类型、所有者、段名称和段的大小(以GB为单位)
在当前用户下,根据指定的表名,按列的正序排列,将列名串成逗号分隔的字符串。请用PL/SQL的过程(PROCEDURE)实现。注意:1)不要使用WMSYS.WM_CONCAT函数 2)当前用户下可能没有指定的表。 3)如果可以,请用一条SQL实现。
1 条回复 • 2015-04-28 23:02:56 +08:00
|
|
1
batman2010 2015-04-28 23:02:56 +08:00
第一题可以不用join实现吗?直接group by分组最简单。
|