sql 怎么分组取行数最大的一条
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql 怎么分组取行数最大的一条相关的知识,希望对你有一定的参考价值。
declare @Tab table(Num int, Name varchar(2), Time DATETIME)
insert into @tab select 1 ,\'a\', \'2009/05/01\'
insert into @tab select 1 ,\'a\', \'2009/05/02\'
insert into @tab select 1 ,\'a\', \'2009/05/03\'
insert into @tab select 2 ,\'b\', \'2009/05/04\'
insert into @tab select 2 ,\'b\', \'2009/05/05\'
insert into @tab select 3 ,\'c\', \'2009/05/06\'
insert into @tab select 3 ,\'c\', \'2009/05/07\'
insert into @tab select 5 ,\'e\', \'2009/05/08\'
insert into @tab select 1 ,\'a\', \'2009/05/09\'
insert into @tab select 1 ,\'a\', \'2009/05/10\'
select * from @Tab t where not exists(select 1 from @Tab where num=t.num and [time]<t.[time])
/*
Num Name Time
----------- ---- -----------------------
1 a 2009-05-01 00:00:00.000
2 b 2009-05-04 00:00:00.000
3 c 2009-05-06 00:00:00.000
5 e 2009-05-08 00:00:00.000
(4 行受影响)
*/select * from test where b in (select max(id) from test group by a)
适用于所有数据库:
select t1.a,t1.b,t1.c
from test t1
inner join
(seelct a,max(b) as b from test group by a) t2
on t1.a=t2.a and t1.b=t2.b
适用于所有数据库:
select a,b,c
from(
select a,b,c
,row_number()over(partition by a order by b desc) rn
from test
)
where rn=1 参考技术A 你能说清楚一点吗?你是什么格式的表格
sql语句,求出现次数最多的组中,出现次数最多的一条数据
求写sql语句,求出现次数最多的组中,出现次数最多的一条数据。
描述:
sender 是发信人,receiver是收信人,求一个sender,给收到最多信息的人,发的信息最多?
我的思路是,对receiver 分组 count下,得到最大的那个receiver。以此作为条件,把sender 分组 count 一下求最大的那个sender。 面试官说还有更高效的解法。求更高效的解法?
由于这里有count()函数的存在,我想弄exist可是我写不出来。求各位广开思路。
数据表如下:
我写的sql语句如下(可以求得结果,面试官说可以优化):
select top 1 sender,COUNT(sender) as senderCount from tb_A a join (select top 1 receiver, count(receiver) as count from tb_A group by receiver order by count desc) b on a.receiver = b.receiver group by sender order by senderCount
我的sql语句,最后落下了一个 desc
你呢回答我有3个疑问。1.语法可能不对。2.不合题意,是receiver数最多的那个组中sender数最多。3.你的效率并不比我高
追答语法确实有问题,因为手边没有环境测试,不知是我的语文是体育老师教的还是怎么的,没看明白题目,你好歹给个结果啊,不然看不明白题目也是愁。
参考技术B 结果是什么以上是关于sql 怎么分组取行数最大的一条的主要内容,如果未能解决你的问题,请参考以下文章
Sqlserver 中 如何筛选出 分组后成绩最大列的这一列