せずに、いくつかの集計関数ベースの条件で1行を選択:私はそこにユーザ注文により、および(Oracleで)ROWNUMよりも、これを解決するために、よりエレガントな方法だが、ここに行くかどうかわからないんだけど、サブクエリ
私はこれを持っていますテーブル(勝者と呼ばれる):
Name Salary House Kids
--------------------------------
Barabara 2500.00 40 4
Dale 2000.00 60 3
Aaron 2000.00 45 2
Joe 2000.00 45 4
Jacob 2000.00 50 4
Melissa 2500.00 50 4
ハウスは、
「優勝者」(名前はありますが、列にはさらに多くの列を含めることができます)が見つかるクエリ(サブクエリなし)が必要です。 「勝者」はそうのように定義されています。
- は最低の給料を稼いで
- (同数の場合には:)最小の家を持っている
- (別同数の場合には:)子供の数が最も多いです。この例では
、勝者は2000年を稼いジョーは、45の家の大きさを持っており、4人の子供を持っています。別の方法にはあり
select *
from
(select name
from winner
order by salary, house, kids desc)
where rownum = 1;
:
唯一の方法である(それでもインデックスのみと非常にシンプルでありながら効率的なコードを持っており、すなわち、)サブクエリ(インラインのようなものを持っている別の選択を持っています)サブクエリを使わずにそうしますか? (おそらく集合関数ですか?)
あなたは 'join'を考えますか? – Bulat
これはあなたの問題を解決するための標準的な方法です。サブクエリ*なしでクエリ*が必要なのはなぜですか? – mathguy
それは割り当てです。 私は 'join 'と考えることができます。それが唯一の方法だと思いますか? – Neer