0

重複の可能性:OracleSQL-
列の上位5つの値を取得する方法

私はオラクルクエリを書いていますが、次の問題で立ち往生しています

テーブルは次のようになります。

**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フィドルでの例。

于 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 に答える