• 主页
  • Oracle 基础和管理
  • Oracle 高级技术
  • Oracle 认证与考试
  • 职位交流

在oracle数据库中,如何用sql语句将销量排名前十的商品查询出来

york2002 2015-08-04 08:15:23
在oracle数据库中,如何用sql语句将销量排名前十的商品查询出来
...全文
3089 点赞 收藏 18
写回复
18 条回复
Jabin_Zhang 2018年07月24日
这个帖子已经过去快三年了,不知道楼主还能不能看到,我清楚楼主的意思,大家回复的都不对,下面贴出我的例子

eg.我现在要取满足 charge>7000条件下 top 5 charge,如下图,选中部分是我想要的结果


1.按楼上各位的方法:
select *
from
(select charge, rownum rnum from yidong_liushi_cust_201804 where charge > 7000 order by charge*1 desc)
where rnum <= 5

明显不是我要的结果,当然这也是楼主的意思

2.插一句,因为我的charge是varchar2类型,所以排序的时候需要 charge*1 或者 charge+0,这样才可以正常排序


3.正确写法:


希望可以帮到大家
回复 点赞
york2002 2015年08月07日
到底怎么回事啊,谁能告诉我
回复 点赞
wlwyangt 2015年08月06日
引用 12 楼 york2002 的回复:
rnum到底是什么?查询出来的确实不是我要的前十的销售
rownum 是伪列楼上的是,按销售降序排列,销售量最高的商品排在第一位,所以rnum<=10,就是取商品销量的前10
回复 点赞
_拙计 2015年08月06日
select 产品名, 总销量
  from (select 产品名,
               sum(销量) as 总销量,
               row_number() over(order by sum(销量) desc) rn
          from A
         group by 产品名) T
 where rn < 11
回复 点赞
weixin_30364005 2015年08月05日
引用 7楼york2002 的回复:
rnum是行数,我要的是sale的销量前十,不是行数小于十的
六楼的是根据sum求和后排序,取出排序前十的商品,不就是你要的结果了么?
回复 点赞
xiongshao1943 2015年08月05日
引用 9 楼 york2002 的回复:
我按他写的查询的,结果不是我要的。如果去掉where rnum <=10 ,查询结果是所有商品按销售排序。 加上where rnum <=10 ,查询的rnum小于10的十条记录,而不是sale前十的数据。
如果去掉where rnum <=10 ,查询结果是所有商品按销售汇总降序排序的 降序完取前十,不就是销售汇总最猛的十个吗? 我也是醉了,不知道楼主怎么理解的
回复 点赞
york2002 2015年08月05日
我按他写的查询的,结果不是我要的。如果去掉where rnum <=10 ,查询结果是所有商品按销售排序。 加上where rnum <=10 ,查询的rnum小于10的十条记录,而不是sale前十的数据。
回复 点赞
york2002 2015年08月05日
我完全按6楼的写的,查询就是不对啊
回复 点赞
york2002 2015年08月05日
rnum是rownum是行数,不是sale的统计数,按它来取前十怎么能对呢。
回复 点赞
york2002 2015年08月05日
rnum到底是什么?查询出来的确实不是我要的前十的销售
回复 点赞
tangren 2015年08月05日
SELECT *
  FROM (SELECT product_name, SUM(sale_num)
          FROM sales
         WHERE sale_date BETWEEN DATE'2014-08-04' AND DATE'2015-08-04'
         GROUP BY product_name
         ORDER BY 2 DESC)
 WHERE ROWNUM <= 10;
回复 点赞
zbdzjx 2015年08月04日
select ProductName, sale from (select ProductName, sale,rownum rnum from (select ProductName, sum(sale) sale from table1 where 一年内 group by ProductName) aa order by sale desc ) where rnum <=10
回复 点赞
york2002 2015年08月04日
我不会写sql语句,加sum怎么写
回复 点赞
小灰狼W 2015年08月04日
对于这样的需求描述,只能给这样的答案 查询所有商品一年的销量,然后排序,再取前十
回复 点赞
york2002 2015年08月04日
按统计的销量排名
回复 点赞
york2002 2015年08月04日
我要查一年的销量,需要统计
回复 点赞
jdsnhan 2015年08月04日
select sale from (select sale,rownum rnum from table order by sale desc ) where rnum <=10
回复 点赞
york2002 2015年08月04日
rnum是行数,我要的是sale的销量前十,不是行数小于十的
回复 点赞
发动态
发帖子
Oracle
创建于2007-09-28

6417

社区成员

5.4w+

社区内容

Oracle开发相关技术讨论
社区公告
暂无公告