需求:

  查询每个供应商在每个类型产品销售的top50中有多少

分析:

  1.查询,以指定字段(供应商、产品类型)分组,取每个分组的前50行,查看每个供应商的数量

  2.使用rank函数给每个供应商、每个类型产品的销售量做个排名,添加伪劣ran

  3.筛选ran小于等于50的行,以供应商、产品类型分组,count

sql:

select gyscode 供应商编码, typeid 类型id, count(1) num
from (select t.gyscode,
t.typeid,
sum(t.sale) sale,
rank() over(partition by t.gyscode, t.typeid order by sum(b.sale) desc) ran
from t_sale t
where
-- 计算周期:上月1到上月最后一天
t.log_date>= add_months(trunc(sysdate, 'mm'), -1)
and t.log_date<= last_day(add_months(trunc(sysdate, 'mm'), -1))
group by t.gyscode, t.typeid)
  where ran <= 50
group by gyscode, typeid

注:runk函数两种用法:

  dense_rank:连续排名,如果有两个供应商的销售额一样,排名相同,但是下一个供应商的排名+1

  rank:不连续排名,如果有两个供应商的销售额一样,排名相同,但是下一个供应商的排名+2(2:销售额相同的供应商数量)

runk函数有两种排名:

  1.所有结果排名(不加partition,相当于以某个字段排序后的rownum)

  2.分组排名(加partition)

oracle 分组中排序(rank函数)的更多相关文章

  1. MySQL之实现Oracle中的rank()函数的功能

      假设表格为student, 数据如下:   我们要在MySQL中实现Oracle中的rank()函数功能,即组内排序,具体来说: 就是对student表中按照课程(course)对学生(name) ...

  2. 微软BI 之SSRS 系列 - 巧用 RunningValue 函数在分组中排序并设置 RANK 排名

    开篇介绍 经常有像类似于这样的排序需求,以及设置分组下的排序序号.比如此图中要求城市 City 在省份下按照 Internet Sales Amount 总销售额进行排序,并标识在各省份下的排名. 实 ...

  3. oracle数据库中的存储函数

    oracle中的存储函数,和系统内的函数类似,可以像调用系统函数一样调用存储函数.它与存储过程的唯一区别就是存储过程没有return返回值,存储函数可以与存储过程互换,存储函数可以在存储过程中调用. ...

  4. javascrip 中排序的函数怎么理解

    其中s是数组[888,2222,9,4]:我不明白sort函数中参数是如何作用的,function中的a和b又是干什么的? 那个function的作用就是比较两个数的大小用的,然后返回结果的正负作为排 ...

  5. 在MySQL中实现Rank高级排名函数【转】

    MySQL中没有Rank排名函数,当我们需要查询排名时,只能使用MySQL数据库中的基本查询语句来查询普通排名.尽管如此,可不要小瞧基础而简单的查询语句,我们可以利用其来达到Rank函数一样的高级排名 ...

  6. 在MySQL中实现Rank高级排名函数

    MySQL中没有Rank排名函数,当我们需要查询排名时,只能使用MySQL数据库中的基本查询语句来查询普通排名.尽管如此,可不要小瞧基础而简单的查询语句,我们可以利用其来达到Rank函数一样的高级排名 ...

  7. Oracle中的substr()函数 详解及应用

    注:本文来源于<Oracle中的substr()函数 详解及应用> 1)substr函数格式   (俗称:字符截取函数) 格式1: substr(string string, int a, ...

  8. Oracle中的instr()函数 详解及应用

    1)instr()函数的格式  (俗称:字符查找函数) 格式一:instr( string1, string2 )    /   instr(源字符串, 目标字符串) 格式二:instr( strin ...

  9. 【HANA系列】SAP HANA计算视图中的RANK使用方法

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA计算视图中的RA ...

随机推荐

  1. 思维+并查集 hdu5652

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5652 题意: 输入T,接下来T个样例,每个样例输入n,m代表图的大小,接下来n行,每行m个数,代表图, ...

  2. HDFS 总结

    HDFS是一个分布式文件存储系统 Client  提交读写请求(拆分blocksize) NameNode 全局把控(知道blocksize的地址) dataNode 存储数据(将数据存储进去,且以P ...

  3. (mysql数据库报错)The user specified as a definer ('root'@'%') does not exist

    权限问题,授权 给 root  所有sql 权限 解决办法: (1)登录MYSQL 以管理员身份运行cmd      >mysql -u root -p      >密码 (2)更改权限 ...

  4. SQL Server中row_number的用法

    ROW_NUMBER()函数将针对SELECT语句返回的每一行,从1开始编号,赋予其连续的编号.在查询时应用了一个排序标准后,只有通过编号才能够保证其顺序是一致的,当使用ROW_NUMBER函数时,也 ...

  5. c#的Boolean.Parse用法

    bool val; string input; input = bool.TrueString; val = bool.Parse(input); Console.WriteLine("'{ ...

  6. Angular之替换根组件

    一 在index.html中,替换根组件选择器 <!doctype html> <html lang="en"> <head> <meta ...

  7. 对于装office 365时,visio不兼容的解决

    先将office 365装好,之后从这个网址下载visio安装即可,但是没有 激活码,需要自己激活: 网址:链接: https://pan.baidu.com/s/1OqONPuJ0eumrpts-X ...

  8. HTML基础学习笔记(1)

    HTML学习笔记(1) 1.常用快捷键 win+d---返回桌面 win+e---我的电脑 win+r---打开运行 Alt+tab---切换软件 ctrl+tab---切换软件文档 F2---重命名 ...

  9. ios 获取当前时间

    1.第一种返回的时间是一个整个的字符串. NSDate *timeDate = [NSDate date]; NSDateFormatter *dateFormatter = [[NSDateForm ...

  10. golang 创建一个简单的广播echo服务器

    package main; import ( "net" "fmt" "bufio" ) //里面的代码部分参考cmu440课程 //htt ...