如何取group by后最大值所对应的字符字段?

表:testidnamenumtype1ddd2013aaa1325ccc2447aee302selecttype,max(num),最大num所对应的名称和IDfrom... 表:test
id name num type
1 ddd 20 1
3 aaa 13 2
5 ccc 24 4
7 aee 30 2

select type,max(num),最大num所对应的名称和ID from test group type

需要查询的字段:最大num所对应的名称和ID

请指教 数据库为:sqlserver
展开
 我来答
koyo0228
2012-03-13 · 超过31用户采纳过TA的回答
知道答主
回答量:230
采纳率:0%
帮助的人:83.1万
展开全部
你提的有点不太清楚,或许我理解问题 ,你要显示type这一列吗?是考虑type这一列的数据查找最大的num再查询对应的名称和ID,还是不考虑type这一列,直接最大的num
1、不考虑,如下
select name,id from test a where a.num=(select max(b.num) from test b )
2、考虑,如下
select name,id,type from test a where a.num=( select max(b.num) from test b where a.type=b.type group by type )
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
x403879785
2012-03-13 · TA获得超过3839个赞
知道大有可为答主
回答量:1299
采纳率:100%
帮助的人:1177万
展开全部
select a.id,a.name,b.type,b.max_num
from test a,(
select type,max(num) as max_num
from test
group by type)as b
where a.type=b.type and a.num=b.max_num
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
flyingFish211
2012-03-13 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.5万
采纳率:50%
帮助的人:1.1亿
展开全部
select name, id
from test t
where not exists (select 1 from test where num > t.num)

或者
select name, id from test where num = (select max(num) from test)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式