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

参考技术A select top 1 * from (select receiver,count(receiver) as count from tb_A group by receiver order by count desc) a where sender=(select top 1 sender,count(sender) as sendcount from tb_A group by sendcount desc)追问

你呢回答我有3个疑问。1.语法可能不对。2.不合题意,是receiver数最多的那个组中sender数最多。3.你的效率并不比我高

追答

语法确实有问题,因为手边没有环境测试,不知是我的语文是体育老师教的还是怎么的,没看明白题目,你好歹给个结果啊,不然看不明白题目也是愁。

参考技术B 结果是什么

以上是关于sql 怎么分组取行数最大的一条的主要内容,如果未能解决你的问题,请参考以下文章

mysql查询分组中最大的值

SQL查询取分组最大值

mysql查询时间最大的某一列

Sqlserver 中 如何筛选出 分组后成绩最大列的这一列

请教一个sql(按2个字段分组然后从每组取出最大的一条纪录,再根据一个标记为判断是不是取出该值)

如何显示mysql分组中时间最大的一行记录