SQL查询:获取每个不同letter对应的number列最大值
SQL按letter分组取每组最大number的查询方案
表结构与示例数据
letter number A 2 A 1 A 7 B 3 B 9 C 1 C 1 C 0 C 7 C 5 D 8 D 8 D 4 E 2
需求说明
返回每个不同的letter值,以及对应letter分组下的最大number值,预期输出如下:
A 7 B 9 C 7 D 8 E 2
原有语句问题
你写的SELECT DISTINCT letter, number from "Table name"是对letter+number的组合去重,同一个letter下只要存在不同的number值就会返回多条记录,无法实现每个letter仅输出一条的要求。
正确写法
使用GROUP BY分组搭配MAX聚合函数即可实现需求:
SELECT letter, MAX(number) FROM "Table name" GROUP BY letter
如果需要和示例预期输出一致按letter升序排列,可以加排序逻辑:
SELECT letter, MAX(number) FROM "Table name" GROUP BY letter ORDER BY letter ASC
内容的提问来源于stack exchange,提问作者J. Dawkins
相关产品推荐
相关产品推荐

