0

可能重复:
Oracle SQL - 如何检索列的最高 5 个值

我正在编写 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

我试图通过使用查询而不是函数或过程来获得这个感谢您的帮助

4

2 回答 2

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

SQL Fiddle 的示例。

于 2012-10-28T17:52:07.910 回答
1

这是另一种选择。

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

我想讨论一下哪个更好或哪个做什么,对我来说这是我第一次看到row_number()。请注意,这个按字母顺序返回女性,您的也是通过在窗口中排序来完成的,有什么区别?

于 2012-10-28T18:22:58.887 回答