SQL 分组后获取每组中最大值
场景:sql server 2008
drop table ID
CREATE TABLE ID
(
id int identity(1,1) not null,
code int ,
D date,
PRIMARY KEY (id)
) insert into ID(code,D) values(0001,getdate())
insert into ID(code,D) values(0002,getdate())
insert into ID(code,D) values(0002,getdate())
insert into ID(code,D) values(0003,getdate())
insert into ID(code,D) values(0003,'2017-08-02')
insert into ID(code,D) values(0003,'2017-08-01') select * from ID

目标:
select COUNT(*) from ID group by code

产生code列唯一的3行数据,并显示最小的D列数据
方案1:
select code,MIN(D)
from ID group by code

方案2:
是否有重复code行
select COUNT(*) from ID where
code in(select code from ID group by code having COUNT(*) > 1)
@1
select * into #a from ID
delete from #a
where code in (select code from #a group by code having count(code) > 1)
and D not in (select min(D) from #a group by code having count(code) > 1)
select * from #a

删掉记录数最多的中一条数据
反复执行
方案3:
select code,D from
(
select MIN(D) from ID where COUNT(code)>1
)t1 right join ID t2 on t1.D=t2.D
SQL 分组后获取每组中最大值的更多相关文章
- SQL 分组后,获取每组中的最大值对应的数据
select gr,num,dt,(select bys from test where gr=b.gr and dt=b.dt) bys from ( select gr,count(0) num, ...
- SQL 分组后获取其中一个字段最大值的整条记录
--有id,name,createDate的一张表testTable--根据name分组,获取每组中createDate最大的那条记录(整条)查询出来------------------------- ...
- SQL分组后获取其中一个字段最大值的整条记录
SELECT * FROM( SELECT id,name,counts,createDate,row_number() OVER(partition BY name ORDER BY createD ...
- sql 分组后显示每组的前几条记录
sql 分组后显示每组的前几条记录 如 表中记录是 code serialno A1 1 ...
- 2.(group by)如何让分组后,每组中的数据按时间倒序排列(group by和 order by的分组按排列)
比如说有表devicedata: 问题: 现在我想将devicedata这个表中的数据,先按device_id这个字段分组,然后每组中的数据按时间字段ts从大到小的排列, 如何解决呢? 错误的sql: ...
- 1.(group by)如何让group by分组后,每组中的所有数据都显示出来
问题描述:表如下,如何让这个表按device_id这个字段分组,且组中的每条数据都查寻出来?(假如说这个表名为:devicedata) 错误答案:select * from devicedata GR ...
- group by分组后获得每组中符合条件的那条记录
当group by单独使用时,只显示出每组的第一条记录.如下,未分组时查询出两条记录 SELECT info.id, info.switch_id, info.port_id, info.mac_ad ...
- oracle分组后取某组中最大的值
查询username,根据fundcode分组,按照date倒序,取date最大的一条数据 select * from ( select username, row_number() over(par ...
- sql 分组后按时间降序排列再取出每组的第一条记录
原文:sql 分组后按时间降序排列再取出每组的第一条记录 竞价记录表: Aid 为竞拍车辆ID,uid为参与竞价人员ID,BidTime为参与竞拍时间 查询出表中某人参与的所有车辆的最新的一条的竞价记 ...
随机推荐
- leetcood学习笔记-112-路径总和
题目描述: 第一次提交: class Solution(object): def hasPathSum(self, root, sum): """ :type root: ...
- delphi xe10 手机内部系统相关操作(手机信息、震动、剪贴板、键盘、电话、拨号)
//获取手机信息 function GetPhoneInfo(): string; Var TelephonyManager: JTelephonyManager; TelephonyServiceN ...
- lua执行的两种方式
一.交互模式 二.脚本式 创建一个以lua结尾的文件,例如hello.lua文件内容 println("hello world")
- nginx+keepalive 实现高可用负载均衡方案
转:http://ju.outofmemory.cn/entry/52165 主nginx负载均衡器:172.26.11.99 (通过keepalived配置了VIP:172.26.11.101供外 ...
- git 安装 使用过程遇到的问题
git add "文件名"->git commit -m 'add' ->>git push origin develop 1.git基础之切换分支 选择gi ...
- LeetCode 1108. Defanging an IP Address (IP 地址无效化)
题目标签:String 题目给了我们一组 ip address,让我们把 . 变成 [.],这题可以用replace,但是这样做的话,好像没意义了.所以还是走一下array,具体看code. Java ...
- ssrf对redis未授权访问写webshell
docker建立redis镜像 docker run -d -p 9999:6379 redis 将redis的6379端口映射到物理机的9999端口 使用工具生成攻击代码 攻击 进入容器查看
- <router-link :to="...">
一.<router-link :to="..."> to里的值可以是一个字符串路径,或者一个描述地址的对象.例如: // 字符串<router-link to=& ...
- 996弱爆了,我还能12x12, 8116+8!
Java技术栈 www.javastack.cn 优秀的Java技术公众号 来自长江日报 这些天"马云谈996"的话题火了 昨晚刘强东也在朋友圈发文 "8116+8!&q ...
- [AH2017/HNOI2017]单旋
题目 \(\rm splay\)水平太差,于是得手玩一下才能发现规律 首先插入一个数,其肯定会成为其前驱的右儿子或者是后继的左儿子,进一步手玩发现前驱的右儿子或者是后继的左儿子一定只有一个是空的,我们 ...