2016-03-20 21 views
1

は、私は、Oracleデータベースに次の表「プレーヤー」を持っていると仮定します。オラクルSQLクエリは

P_ID P_NAME  C_ID  DEBUT  MATCH  RUNS 

101 amla   204  2003  190  5000 
    102 mushi   200  2001  240  7500 
    103 sakib   200  1999  150  5000 
    104 ricky   205  1993  180  7000 
    105 sachin  203  1990  250  8000 
    106 yuvi   203  1999  150  6900 

私はC_IDを表示するクエリを必要とする、合計の実行最大の得点を記録している国のすべての打者によって行われる。 (この場合、最大ランスコアラーは sachinです。したがって、クエリーはc_id = 203、runs = 14900を返します)。

私は、最高ランスコアラーと彼が所属する国を見つけることができました。クエリ: c_idを選択し、実行しているプレイヤーから実行=(プレイヤーから最大を選択)。それは です。しかし、私はさらに進めませんでした。

+0

をあなたが問題を解決しようとする試みを含める必要があります。 –

+0

私は打者から最大ラン・スコアラーしか見つけられませんでした。 select c_idは、実行されているプレイヤーから実行されます((プレイヤーから最大を選択します))。 私はさらに進めませんでした。 –

答えて

0

集計関数の条件が必要な場合は、サブクエリまたはhaving節を使用する必要があります。 この戻り常に1行が、より多くのそして1グループが同じ合計を持っているとき、それは間違っている:

SELECT * 
FROM (
    SELECT c_id, Sum(runs) total 
    FROM player 
    GROUP BY c_id 
    ORDER BY total DESC 
) WHERE ROWNUM =1; 

しかし、あなたはこのすべて使用して得ることができます。

SELECT c_id, Sum(runs) total 
FROM player 
GROUP BY c_id 
HAVING Sum(runs) = (
    SELECT Max(t) from (
    SELECT Sum(runs) t 
    FROM player 
    GROUP BY c_id)) 
; 
+0

ありがとうございます。出来た。 –