0

次の表があるとしましょう。

 SomeTable(
    id, 
    price
 )

この表から2番目に高い価格の行を選択するにはどうすればよいですか?注:これは、データベースに依存しない方法で、Pl/SQLで実行する必要があります。ループなしでこれを行うことは可能ですか?

  1. 私はこれがのようなOracleコンストラクトrownumまたはのようなmysqlコンストラクトを使用してどのように行われるかを知っているlimitので、それらを探していません。
4

2 に答える 2

1
CREATE TABLE mytable (id NUMBER PRIMARY KEY, price NUMBER NOT NULL);
INSERT INTO mytable VALUES (1, 10);
INSERT INTO mytable VALUES (2, 20);
INSERT INTO mytable VALUES (3, 20);
INSERT INTO mytable VALUES (4, 30);

SELECT id, price 
 FROM (
       SELECT id, price, RANK() OVER (ORDER BY price DESC) AS r
         FROM mytable
      )
 WHERE r=2;

 ID PRICE
--- -----
  2    20
  3    20
于 2012-12-04T10:12:04.817 に答える
1

これは簡単ではありませんか?神は私が以前にそれについて考えなかった理由を知っています!

select max(price)from tnum where price <>(select max(price)from tnum)

于 2013-01-31T09:29:23.127 に答える