求sql大神帮忙,急急。。。

xiaoyaodeyun2008 2011-10-26 02:46:02
有姓名和年龄两个字段,姓名有重复,要求查出所有的姓名和年龄,姓名重复的只查出年龄最大的那一个。再一个,查出重复次数最多的姓名。
...全文
74 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
@信心 2011-10-26
  • 打赏
  • 举报
回复
//查出重复次数最多的姓名

select name,max(agetimes )from
(select distinct name ,count(age) as agetimes from tb
group by name
order by desc
) a
@信心 2011-10-26
  • 打赏
  • 举报
回复
//姓名重复的只查出年龄最大的那一个
select distinct (name)) from tb yy
where age= (select max(age) from tb xx where xx.name=yy.name )
;

geniuswjt 2011-10-26
  • 打赏
  • 举报
回复

select top 3 姓名,count(1) from tb
group by 姓名 having count(1)>1
order by 2 desc

[Quote=引用 3 楼 xiaoyaodeyun2008 的回复:]
引用 1 楼 geniuswjt 的回复:

SQL code

1.查出所有的姓名和年龄,姓名重复的只查出年龄最大的那一个
select * from (
select rid=row_number() over (partition by 姓名 order by 年龄 desc),* from tb
) t
where rid=1

2.查出重复次数最多的姓名
selec……
[/Quote]
--小F-- 2011-10-26
  • 打赏
  • 举报
回复
select top 3 姓名,count(1) from tb 
group by 姓名 having count(1)>1
order by 2 desc
--小F-- 2011-10-26
  • 打赏
  • 举报
回复
select top 1 姓名,count(1) from tb 
group by 姓名 having count(1)>1
order by 2 desc
xiaoyaodeyun2008 2011-10-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 geniuswjt 的回复:]

SQL code

1.查出所有的姓名和年龄,姓名重复的只查出年龄最大的那一个
select * from (
select rid=row_number() over (partition by 姓名 order by 年龄 desc),* from tb
) t
where rid=1

2.查出重复次数最多的姓名
select 姓名,count(1) from tb
group by ……
[/Quote]谢谢,如果第二个是查出重复最多的前三条叻?
--小F-- 2011-10-26
  • 打赏
  • 举报
回复
select * from tb t where age=(select max(age) from tb where name=t.name)

select top 1 name from tb where name in (select 姓名 from tb group by 姓名 having count(1)>1)
geniuswjt 2011-10-26
  • 打赏
  • 举报
回复

1.查出所有的姓名和年龄,姓名重复的只查出年龄最大的那一个
select * from (
select rid=row_number() over (partition by 姓名 order by 年龄 desc),* from tb
) t
where rid=1

2.查出重复次数最多的姓名
select 姓名,count(1) from tb
group by 姓名 having count(1)>1
order by 2 desc

34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧