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

york2002 2015-08-04 08:15:23
在oracle数据库中,如何用sql语句将销量排名前十的商品查询出来
...全文
5366 18 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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的销量前十,不是行数小于十的
引言 Sun 与 Oracle 合并的未来 1,如果云计算对企业来说变得越来越重要,那么数据将是云计算的核心。而讲到数据,也就意味着 数据库。就如塔克商学院数字策略心主任 M. Eric Johnson所说的那样,Sun已经清楚展现了一 个真实的云计算环境。就那些将云计算停留在理论阶段的对手来说,收购Sun对Oracle来说将获 得竞争优势。 2,Johnson主任还指出,Sun在很多需求旺盛的方面“保持领先地位”。Sun的技术可以帮助数 据库提高性能,尤其是对大型数据库Oracle和 Sun的结合之后,对任何一个信息官来说都具有吸 引力。 3,Oracle软件和 Java的紧密结合,使得 Oracle的软件能跨平台使用。就如 IDC研究副总裁 Jean Bozman指出那样,真正云计算的第一步是“将服务器和存储单元垂直化”,可以适用于不同的 硬件平台。凭借 Java,Oracle可以拓展跨平台的控制力,而这正是企业 IT部门想要的。实际上, OracleOracle Fusion Middleware 正是基于 Java。 4,有意思的是,Oracle Fusion Middleware 扩大了对服务器的需求,其原因正是由于它是基 于 Java。而现在,Oracle通过购得 Sun服务器资源,可以进一步降低价格,从而进一步提高 Oracle Fusion Middleware 的竞争力。 5,由于Oracle大部分收入来自数据库软件许可,因此有必要的话,可以用便宜的服务器硬件 作为促销的手段,这样对那些硬件服务器竞争对手来说是不小的打击。 6,Sun已经售出 160万到 200万台服务器,还有更多的运行Sun Solaris操作系统的其它公司 的服务器。这对 Oracle捆绑销售自家产品也很有帮助。 7,Oracle收购 Sun,当然也包括开源数据库 MySQL。对于那些预算不多但又需要 Oracle产 品的用户,Oracle可以用MySQL来满足这些用户的需求。这可以使 Oracle进入小企业业务,更 有机会在这方面超过SAP。此外,还提供了和微软SQLServer的竞争产品,而不需要降低 Oracle 自有的产品的定位。

17,137

社区成员

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

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