一个面试题
2015-07-17 17:25
302 查看
create table tb_product
(
prod_id int , --商品编号
category_id int, ----商品类别
prod_name varchar(100) ----商品名称
)
create table tb_sales
(
prod_id int , ---商品编号
num int, ----销售数量
price float -----销售单价
)
tb_product 表数据 商品表数据
1 1
1 背心
2 2 1裤衩
3 3 2面包
4 4 2牛奶
5 5 1衬衣
6 6 1内裤
tb_sales 表数据 销售表数据
1 1
1 1.2
2 1 21.3
3 2 15
4 2 36
5 3 11
6 3 11.5
7 4 11
8 4 11
9 6 11
1、查询销售数量排行前十位的商品编号、名称、及总数量、总价格
select * from
(
select a.prod_name,a.prod_id,case when b.shuliang is NULL then 0 else shuliang end shuliang , case when b.zongjia is NULL then 0 else zongjia end zongjia from tb_product a left join
(select prod_id,sum(num) shuliang, sum(num*price) zongjia from tb_sales group by prod_id) b on a.prod_id=b.prod_id order by shuliang desc
)
where rownum<10
2、查询每类商品中销售数量排行前三的商品编号、商品名称、 商品类别
select * from (
select a.category_id,a.prod_name,a.prod_id,case when b.shuliang is NULL then 0 else shuliang end shuliang , case when b.zongjia is NULL then 0 else zongjia end zongjia from tb_product a left join
(select prod_id, sum(num) shuliang, sum(num*price) zongjia from tb_sales group by prod_id) b on a.prod_id=b.prod_id order by shuliang desc ) s1 where s1. shuliang
in (
select shuliang from
(
select a.category_id,a.prod_name,a.prod_id,case when b.shuliang is NULL then 0 else shuliang end shuliang , case when b.zongjia is NULL then 0 else zongjia end zongjia from tb_product a left join
(select prod_id, sum(num) shuliang, sum(num*price) zongjia from tb_sales group by prod_id) b on a.prod_id=b.prod_id order by shuliang desc
) s2 where s1.category_id=s2.category_id and rownum <=3
) order by s1.category_id,s1.shuliang desc
(
prod_id int , --商品编号
category_id int, ----商品类别
prod_name varchar(100) ----商品名称
)
create table tb_sales
(
prod_id int , ---商品编号
num int, ----销售数量
price float -----销售单价
)
tb_product 表数据 商品表数据
1 1
1 背心
2 2 1裤衩
3 3 2面包
4 4 2牛奶
5 5 1衬衣
6 6 1内裤
tb_sales 表数据 销售表数据
1 1
1 1.2
2 1 21.3
3 2 15
4 2 36
5 3 11
6 3 11.5
7 4 11
8 4 11
9 6 11
1、查询销售数量排行前十位的商品编号、名称、及总数量、总价格
select * from
(
select a.prod_name,a.prod_id,case when b.shuliang is NULL then 0 else shuliang end shuliang , case when b.zongjia is NULL then 0 else zongjia end zongjia from tb_product a left join
(select prod_id,sum(num) shuliang, sum(num*price) zongjia from tb_sales group by prod_id) b on a.prod_id=b.prod_id order by shuliang desc
)
where rownum<10
2、查询每类商品中销售数量排行前三的商品编号、商品名称、 商品类别
select * from (
select a.category_id,a.prod_name,a.prod_id,case when b.shuliang is NULL then 0 else shuliang end shuliang , case when b.zongjia is NULL then 0 else zongjia end zongjia from tb_product a left join
(select prod_id, sum(num) shuliang, sum(num*price) zongjia from tb_sales group by prod_id) b on a.prod_id=b.prod_id order by shuliang desc ) s1 where s1. shuliang
in (
select shuliang from
(
select a.category_id,a.prod_name,a.prod_id,case when b.shuliang is NULL then 0 else shuliang end shuliang , case when b.zongjia is NULL then 0 else zongjia end zongjia from tb_product a left join
(select prod_id, sum(num) shuliang, sum(num*price) zongjia from tb_sales group by prod_id) b on a.prod_id=b.prod_id order by shuliang desc
) s2 where s1.category_id=s2.category_id and rownum <=3
) order by s1.category_id,s1.shuliang desc
相关文章推荐
- 字符串面试题:将整型转换为字符串
- 黑马程序员-----------设计模式
- 面试题总结~~(google level)
- 如何锻炼出最牛程序员的编码套路
- 『人在职场』-入职
- (剑指Offer)面试题27:二叉搜索树与双向链表
- 面试总结
- 程序员谱写的一生
- Android面试题
- 黑马程序员------反射机制
- 面试题04_替换空格_剑指Offer系列
- (剑指Offer)面试题26:复杂链表的复制
- 怎么面试架构师
- Android 面试题收集
- 扣丁学堂开课了
- 程序员的2015年9个计划
- 面试题03_二维数组中查找_剑指offer系列
- 程序的bug排查流程总结
- php程序员绝不能违背的安全铁则
- 黑马程序员--------IO流