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

york2002 2015-08-04 08:15:23
在oracle数据库中,如何用sql语句将销量排名前十的商品查询出来
...全文
4879 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
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的销量前十,不是行数小于十的

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧