sql - 如何获取由另一列分区的值的第一个实例?

标签 sql postgresql

我有一张 table ,我想找出 table 上性别 = 'M' 的第一个人和性别 = 'F' 的第一个人

本例中的第一人称 = 按姓名字母顺序排序

name | gender | .......other data
A        M
B        M
C        F
D        F
E             
F        M
G        F

如何获得包含第一个实例 'M' 和 'F' 且没有 null/空列的结果表?

理想的结果:

name | gender | ........other data
A       M
C       F

感谢您的帮助!

最佳答案

您可以像这样使用 row_number() 函数:

SELECT name,gender from (
    SELECT name,gender,
           row_number() OVER(PARTITION BY gender ORDER BY name ASC) as rnk
    FROM YourTable)
WHERE rnk = 1

如果需要,您可以在性别之后添加其他列。

关于sql - 如何获取由另一列分区的值的第一个实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35392366/

相关文章:

PostgreSQL - 限制总日志大小

sql - 如何修复 postgresql UPSERT 中的语法错误?

python - 类型错误 : delete_dog() missing 1 required positional argument: 'Dog_id' How do I get around this?

java - 将日期时间转换为 yyyy-MM-dd HH :mm:ss"format

具有 LIKE 和 AND 子句的 MySQL 查询

sql - 存在外键时违反外键约束

hibernate - 如何在 hibernate 状态下使用 postgres dblink?

hibernate - Spring + Hibernate + Postgresql readOnly Transaction,按需保存

c# - .Join() 上的 LINQ to SQL 错误

mysql - 在 activerecord 中可能使用连接将两个 SQL 查询减少为一个