SQL取某个字段最大(小)数值及其相应行的其他字段值的句语
如下表Z 中,取 字段a 最大的那行
字段a 字段a 字段c
SP000016964 5 20
SP000016964 7 30
SP000016964 1 15
SP000017755 4 16
SP000017755 8 12
最后得到下面结果
SP000016964 7 30
SP000017755 8 12
代码如下 复制代码
SQL语句如下:select z.* from z, (select a,max(b) as max_b from z group by a) z1 where z.a = z1.a and z.b = z1.max_b
下面给大家详细总结一些方法
SQL Server 按某一字段分组 取 最大 (小)值所在行的数据
-- 按某一字段分组 取 最大 (小)值所在行的数据
-- (爱新觉罗.毓华(十八年风雨,守得冰山雪莲花开) 2007-10-23于浙江杭州)
代码如下 复制代码
/*
数据如下:
name val memo
a 2 a2(a的第二个值)
a 1 a1--a的第一个值
a 3 a3:a的第三个值
b 1 b1--b的第一个值
b 3 b3:b的第三个值
b 2 b2b2b2b2
b 4 b4b4
b 5 b5b5b5b5b5
*/
-- 创建表并插入数据:
create table tb(name varchar ( 10 ),val int ,memo varchar ( 20 ))
insert into tb values ( ' a ' , 2 , ' a2(a的第二个值) ' )
insert into tb values ( ' a ' , 1 , ' a1--a的第一个值 ' )
insert into tb values ( ' a ' , 3 , ' a3:a的第三个值 ' )
insert into tb values ( ' b ' , 1 , ' b1--b的第一个值www.111Cn.net ' )
insert into tb values ( ' b ' , 3 , ' b3:b的第三个值 ' )
insert into tb values ( ' b ' , 2 , ' b2b2b2b2 ' )
insert into tb values ( ' b ' , 4 , ' b4b4 ' )
insert into tb values ( ' b ' , 5 , ' b5b5b5b5b5 ' )
go
-- 一、按name分组 取 val最大 的值所在行的数据。
-- 方法1:
select a. * from tb a where val = ( select max (val) from tb where name = a.name) order by a.name
-- 方法2:
select a. * from tb a where not exists ( select 1 from tb where name = a.name and val > a.val)
-- 方法3:
select a. * from tb a,( select name, max (val) val from tb group by name) b where a.name = b.name and a.val = b.val order by a.name
-- 方法4:
select a. * from tb a inner join ( select name , max (val) val from tb group by name) b on a.name = b.name and a.val = b.val order by a.name
-- 方法5
select a. * from tb a where 1 > ( select count ( * ) from tb where name = a.name and val > a.val ) order by a.name
/*
name val memo
---------- ----------- --------------------
a 3 a3:a的第三个值
b 5 b5b5b5b5b5
*/
-- 二、按name分组 取 val最小的值所在行的数据。
-- 方法1:
select a. * from tb a where val = ( select min (val) from tb where name = a.name) order by a.name
-- 方法2:
select a. * from tb a where not exists ( select 1 from tb where name = a.name and val < a.val)
-- 方法3:
select a. * from tb a,( select name, min (val) val from tb group by name) b where a.name = b.name and a.val = b.val order by a.name
-- 方法4:
select a. * from tb a inner join ( select name , min (val) val from tb group by name) b on a.name = b.name and a.val = b.val order by a.name
-- 方法5
select a. * from tb a where 1 > ( select count ( * ) from tb where name = a.name and val < a.val) order by a.name
/*
name val memo
---------- ----------- --------------------
a 1 a1--a的第一个值
b 1 b1--b的第一个值
*/
-- 三、按name分组 取 第一次出现的行所在的数据。
select a. * from tb a where val = ( select top 1 val from tb where name = a.name) order by a.name
/*
name val memo
---------- ----------- --------------------
a 2 a2(a的第二个值)
b 1 b1--b的第一个值
*/
-- 四、按name分组 随机取 一条数据www.111cn.net。
select a. * from tb a where val = ( select top 1 val from tb where name = a.name order by newid ()) order by a.name
/*
name val memo
---------- ----------- --------------------
a 1 a1--a的第一个值
b 5 b5b5b5b5b5
*/
-- 五、按name分组 取 最小的两个(N个)val
select a. * from tb a where 2 > ( select count ( * ) from tb where name = a.name and val < a.val ) order by a.name,a.val
select a. * from tb a where val in ( select top 2 val from tb where name = a.name order by val) order by a.name,a.val
select a. * from tb a where exists ( select count ( * ) from tb where name = a.name and val < a.val having Count ( * ) < 2 ) order by a.name
/*
name val memo
---------- ----------- --------------------
a 1 a1--a的第一个值
a 2 a2(a的第二个值)
b 1 b1--b的第一个值
b 2 b2b2b2b2
*/
更多详细内容请查看:http://www.111cn.net/database/mssqlserver/57825.htm
SQL取某个字段最大(小)数值及其相应行的其他字段值的句语的更多相关文章
- sql取逗号前后数据与批量修改某一字段某一值
sql取逗号后的值 SELECT SUBSTRING_INDEX(字段,) FROM 表名 sql取逗号前的值 SELECT SUBSTRING_INDEX(字段,) FROM 表名 批量修改 UPD ...
- Oracle Sales Cloud:管理沙盒(定制化)小细节2——使用对象触发器更新数字字段
在上一篇 "管理沙盒(定制化)小细节1" 的随笔中,我们使用公式法在 "业务机会" 对象(单头)上建立了 "利润合计" 字段,并将它等于 & ...
- 小书MybatisPlus第9篇-常用字段默认值自动填充
本文为Mybatis Plus系列文章的第9篇,前8篇访问地址如下: 小书MybatisPlus第1篇-整合SpringBoot快速开始增删改查 小书MybatisPlus第2篇-条件构造器的应用及总 ...
- sql取整函数
SQL取整运算2009年04一个月02日本 星期四 10:01有使用说明这种方法记录,就在今天,那么当仍然被遗忘.事实上通常用四舍五入的操作有几种情况,一个是简单的四舍五入,无论是小数点后面的是什么都 ...
- MySQL基本语法(一):和SQL Server语法的差异小归纳
html { font-family: sans-serif } body { margin: 0 } article,aside,details,figcaption,figure,footer,h ...
- 【HANA系列】SAP HANA SQL取表中每行最小值
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA SQL取表中每 ...
- 聊聊sql优化的15个小技巧
前言 sql优化是一个大家都比较关注的热门话题,无论你在面试,还是工作中,都很有可能会遇到. 如果某天你负责的某个线上接口,出现了性能问题,需要做优化.那么你首先想到的很有可能是优化sql语句,因为它 ...
- SQL Server 动态行转列(参数化表名、分组列、行转列字段、字段值)
一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 实现代码(SQL Codes) 方法一:使用拼接SQL,静态列字段: 方法二:使用拼接SQL, ...
- 每日学习心得:SQL查询表的行列转换/小计/统计(with rollup,with cube,pivot解析)
2013-8-20 1. SQL查询表的行列转换/小计/统计(with rollup,with cube,pivot解析) 在实际的项目开发中有很多项目都会有报表模块,今天就通过一个小的SQL ...
随机推荐
- Android 图像压缩,和LRU算法使用的推荐链接
近两日,看的关于这些方面的一些教程数十篇,最好的当属google原版的教程了.国内有不少文章是翻译这个链接的. 需要注意的一点是:Android的SDK中的LRU算法在V4包和Util包中各有一个,推 ...
- 微信公共服务平台开发(.Net 的实现)11-------客服消息(定项消息推送 重要的OPENID)
这次我们来一起研究一下“客服消息”,首先明确一下“客服消息”的概念.这不同于之前的“被动响应消息”,也就是说并不是之前“你一言我一语的即时响应”,可能在某种情况下你需要给不同的人主动发送消息,例如你的 ...
- jQuery 属性操作 - addClass() 方法
使用 addClass() 和 removeClass() 来移除 class,并添加新的 class. <html> <head> <script type=" ...
- wampserver下打开phpMyAdmin出现403错误的问题解决方法
图1 图2 wamp下打开phpMyAdmin出现403错误的问题解决方法安装完wamp后打开其下的phpMyAdmin也就是路径http://localhost/phpmyadmin/ 出现[图一] ...
- jQuery代码性能小细节
选择器Selector的使用 $("#id")使用id来定位DOM元素无疑是最佳提高性能方式,因为jQuery底层将直接调用本地方法document.getElementbyId( ...
- 一款基于jQuery多图切换焦点图插件
这次要给大家分享的也是一款jQuery图片滑块插件,之前有介绍过不少实用的jQuery焦点图插件和jQuery图片滑块插件,比如jQuery左侧Tab切换的图片滑块插件.它的特点是可以同时切换多张图片 ...
- Spring MVC @RequestMapping Annotation Example with Controller, Methods, Headers, Params, @RequestParam, @PathVariable--转载
原文地址: @RequestMapping is one of the most widely used Spring MVC annotation.org.springframework.web.b ...
- MySql 5.7安装配置
最新的MySql免安装版配置: 1,解压缩: 2,添加系统环境变量,PATH=.......;C:\Program Files\MySQL\MySQL Server 5.7\bin 3,修改MySql ...
- 1.7.3 Relevance-相关性
1. 相关性 相关性是一个查询响应满足用户搜索信息的一个度(程度). 查询响应的相关性主要依赖于上下文的查询.单个搜索应用程序可以通过用户的不同需求和期望被用来在不同的上下文.例如,气候数据的搜索引擎 ...
- solr4.x配置IK2012FF智能分词+同义词配置
本文配置环境:solr4.6+ IK2012ff +tomcat7 在Solr4.0发布以后,官方取消了BaseTokenizerFactory接口,而直接使用Lucene Analyzer标准接口T ...