博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
常用SQL分组最大值记录
阅读量:5145 次
发布时间:2019-06-13

本文共 1398 字,大约阅读时间需要 4 分钟。

分组最大值记录

 

比如
    序号          名称       数量       
       1              A        20
       2              A        10
       1              B        20
       2              B        40
       3              B        10
       1              C        20
       2              C        40

 

子查询:

select * from 表 where (序号,名称) in (select max(序号),名称 from 表 group by 名称)

 

 分析函数:

 

select 序号   ,       名称     ,  数量 from 

(select    序号   ,       名称     ,  数量 
,row_number() over(partition by 名称 order by 序号  desc ) rn
form tab_name )
where rn=1

select 序号   ,       名称     ,  数量 from 

(select    序号   ,       名称     ,  数量 
, max(序号) over(partition by 名称) rn
form tab_name )

where rn=序号

注意:max的字段只能是number类型字段,如果是date类型的,会提示错误。date类型用上面的row_number()来做就可以了。


Oracle 分组 取第一条记录
id        apply_id
1         1
2         1
3         1
4         2
5         2
6         3
7         3
8         3

取出
id        apply_id
3         1
5         2
8         3

select alx_a.id
from 
(select id,apply_id,rownum rid from 表) alx_a,
(select id,apply_id,rownum rid from 表) alx_b
where alx_a.apply_id = alx_b.apply_id and alx_a.id <= alx_b.id 
group by alx_a.id,alx_a.apply_id
having count(*) = 1

 

 分组并取每组中的前n条记录

在oracle中有一数据表exam_result(成绩记录表),

表中的一条记录描述了“某个班某个学生某次考试的成绩"

create table EXAM_RESULT 

  ID      NUMBER(10) not null,                   --主键
  CLASSID NUMBER(10) not null,           --  班级id,关联到班级表
  USERID  NUMBER(10) not null,             --用户id,关联到用户表
  EXAMID  NUMBER(10) not null,             --试卷id,关联到试卷表
  RESULT  NUMBER(3)                              --成绩
)

 

现在要求统计完成了试卷id为1,2,3的成绩的前3名

即完成了试卷id为1的前3名,完成了试卷id为2的前3名,完成了试卷id为3的前3名

 

select * from (
      select
        e.classid,
        e.userid,
        e.examid,
        e.result,
            row_number() over (partition by e.examid order by e.examid, e.result desc) rn
                   from exam_result e
                        where e.examid in (1,2,3)
) where rn <= 3
 

转载于:https://www.cnblogs.com/keim/archive/2011/10/14/2212712.html

你可能感兴趣的文章
C++ 面向对象 类成员函数this指针
查看>>
inline函数的总结
查看>>
SPSS-生存分析
查看>>
【Jquery】$.Deferred 对象
查看>>
linux IPC
查看>>
微信公众平台模拟登录自动群发图文消息工具包
查看>>
获取系统GAC
查看>>
[目前未找到题目]扩展KMP模板
查看>>
【转】分布式锁的几种使用方式(redis、zookeeper、数据库)
查看>>
mybatis的批量插入
查看>>
微信公众平台接口,修改分享文案、图片等(前端js部分)
查看>>
HDU 5307 He is Flying (生成函数+FFT)
查看>>
PHP array_combine()
查看>>
浅析C\C++的动态内存管理
查看>>
Python 伪造数据的库:Faker
查看>>
《亿级用户下的新浪微博平台架构》阅读笔记
查看>>
nginx对nodejs服务器的http、https、ws、wss的配置
查看>>
短信中VB.NET编码PDU(一)
查看>>
easybuy项目总结_20180409
查看>>
JAVA学习笔记-异常机制
查看>>