文档章节

sql分组求和取最大值

lvxingjob
 lvxingjob
发布于 2014/07/11 09:46
字数 244
阅读 187
收藏 0
问题:表t有三个字段,student(学生姓名),class(科目),score(成绩),需要找到总成绩最高的学生的姓名 (可能有多个)

一开始的做法:
select student,sum(score) from t group by student having sum(score) =
(select temp.s from
(select student,sum(score) s from t group by student order by s desc limit 1) as temp)

思路是先分组求和,然后对和最大的值取出来,当分组求和的列表的一个值等于最大的值,则取出这条记录。但是group by了两次,想当不爽。

后面找到了rank函数,于是有了这个写法
select * from (
with tmp as(
select student,sum(score) as sum_score from student group by student )
select rank() OVER ( order by tmp.sum_score desc) as cc,* from tmp) as tc  where tc.cc = 1

把分组求和做成一个临时视图tmp,然后找出临时视图rank over排序后的排序为1的记录。
rank over函数在pg,mssql,oracle中都可用,在mysql中不能用

本文转载自:http://lvxing607.iteye.com/blog/2022776

lvxingjob

lvxingjob

粉丝 2
博文 18
码字总数 912
作品 0
杭州
高级程序员
私信 提问
2016-2-24日学习记录

逻辑关系 And or not between ....and ..... like '' % ---任意长度任意字符 _ ---任意单个字符 IN ---在数值中 is null ---判断是否为空 is not null--判断是否不为空 order by col_name{as......

cary_qin
2016/02/24
0
0
awk分组求和分组统计次数

awk分组求和分组统计次数 运维生存时间 - 运维生存时间2017-12-037 阅读 Linux命令awk 发表评论 A+ 所属分类: Linux命令 分组求和 以第一列 为变量名 第一列为变量,将相同第一列的第二列数...

运维生存时间 - 运维生存时间
2017/12/03
0
0
动手学习Elasticsearch中的Multi Match Query

在Elasticsearch全文检索中,我们用的比较多的就是Multi Match Query,其支持对多个字段进行匹配。Elasticsearch支持5种类型的Multi Match,我们一起来深入学习下它们的区别。 5种类型的Mul...

Airship
2018/05/09
38
0
16. 窗口函数 (Window Function) 的使用

从SQL Server 2005起,SQL Server开始支持窗口函数 (Window Function),以及到SQL Server 2012,窗口函数功能增强,目前为止支持以下几种窗口函数: 1. 排序函数 (Ranking Function) ; 2. 聚...

张骞
2018/07/16
0
0
数据库表分组取top n的sql操作

不同的数据库类型有不同的方法,这取决于每种数据库都有自己独有的内置方法。但也有通用sql实现的方法。 测试实例如下,环境mysql。 这里只有两列a和b。 以a列分组,取b中最大值。 取每组数量...

shawnplaying
2016/10/17
229
0

没有更多内容

加载失败,请刷新页面

加载更多

js如何控制table中的某一行动态置顶

两行代码搞定: $('#'+item.roadCode).fadeOut().fadeIn();//获取到需要置顶的行 $(".table").prepend($('#'+item.roadCode)); 其中,fadeOut()方法 作用 --- 从可见到隐藏 如下: prepend(......

码妞
今天
4
0
四种解决Nginx出现403 forbidden 报错的方法

我是在在本地用虚拟机中通过yum安装nginx的,安装一切正常,但是访问时报403, 于是查看nginx日志,路径为/var/log/nginx/error.log。打开日志发现报错Permission denied,详细报错如下: 1....

dragon_tech
今天
3
0
获取RestResultResponse返回的值

Springboot项目,需要调其他服务的接口,返回值类型是RestResultResponse 打断点的结果集是这个 打印出来的getData(): [{id=3336b624-8474-4dd9-bd5b-c7358687c877, paraNo=104, para=Postpo...

栾小糖
今天
4
0
【小学】 生成10以内的加减法

#!/usr/bin/env python# coding: utf-8from random import randrange# 题目的最大数值R_MAX = 10# 生成的题目的数量R_PAGE = 70# 生成减法列表def get_sub_list():...

Tensor丨思悟
今天
11
0
JavaScript设计模式——适配器模式

  适配器模式是设计模式行为型模式中的一种模式;   定义:   适配器用来解决两个已有接口之间不匹配的问题,它并不需要考虑接口是如何实现,也不用考虑将来该如何修改;适配器不需要修...

有梦想的咸鱼前端
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部