可能重复:
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
我试图通过使用查询而不是函数或过程来实现此目的 感谢您的帮助
答案 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
答案 1 :(得分:1)
这是另一种选择。
select min(name), tool
from yourTable
where gender = 'F'
group by tool
我想讨论一下哪个更好,哪个更适合我,这是我第一次看到row_number()
。请注意,这个按字母顺序返回女性,你的同样通过在窗口中排序,有什么区别?