如何获得每个工具的第一个女性,oracle数据库

时间:2012-10-28 17:50:28

标签: sql oracle top-n

  

可能重复:
  Oracle SQL - How to Retrieve highest 5 values of a column

我正在编写oracle查询但遇到了以下问题

表是这样的:

**Tool**       **Name**       **Gender**
Facebook   Alice        F
Facebook   Alex         M
Facebook   Loong        M
Facebook   Jimmy        M
Twitter    James        M
Twitter    Jessica      F
Twitter    Sam          M
Twitter    Kathrine     F
Google     Rosa         F
Google     Lily         F
Google     Bob          M

我想得到的是每个工具中的第一位女性 结果应该是:

Facebook   Alice
Twitter    Jessica
Google     Rosa

我试图通过使用查询而不是函数或过程来实现此目的 感谢您的帮助

2 个答案:

答案 0 :(得分:4)

select  *
from    (
        select  row_number() over (partition by tool order by name) as rn
        ,       Name
        ,       Tool
        from    YourTable
        where   Gender = 'F'
        ) SubQueryAlias
where   rn = 1 -- Only first per tool

Example at SQL Fiddle.

答案 1 :(得分:1)

这是另一种选择。

select min(name), tool
from yourTable
where gender = 'F'
group by tool

我想讨论一下哪个更好,哪个更适合我,这是我第一次看到row_number()。请注意,这个按字母顺序返回女性,你的同样通过在窗口中排序,有什么区别?