Oracleのセットアップ:
CREATE TABLE test_qaium (emp_id, salary, department_id) AS
SELECT 1, 10000, 1 FROM DUAL UNION ALL
SELECT 2, 20000, 1 FROM DUAL UNION ALL
SELECT 3, 30000, 1 FROM DUAL UNION ALL
SELECT 4, 40000, 1 FROM DUAL UNION ALL -- One highest, one 2nd highest
SELECT 5, 10000, 2 FROM DUAL UNION ALL
SELECT 6, 20000, 2 FROM DUAL UNION ALL
SELECT 7, 30000, 2 FROM DUAL UNION ALL
SELECT 8, 30000, 2 FROM DUAL UNION ALL -- Two highest, one 2nd highest
SELECT 9, 10000, 3 FROM DUAL UNION ALL
SELECT 10, 10000, 3 FROM DUAL UNION ALL -- Two highest, no 2nd highest
SELECT 11, 10000, 4 FROM DUAL UNION ALL -- One highest, no 2nd highest
SELECT 12, 20000, 5 FROM DUAL UNION ALL
SELECT 13, 20000, 5 FROM DUAL UNION ALL
SELECT 14, 30000, 5 FROM DUAL; -- One highest, Two 2nd highest
クエリ:
SELECT *
FROM (
SELECT t.*,
DENSE_RANK() OVER (PARTITION BY department_id
ORDER BY salary DESC) AS rnk
FROM test_qaium t
)
WHERE rnk=2;
出力:
これは、各部門のための第二の最高給与を持つすべての行を取得します。
EMP_ID SALARY DEPARTMENT_ID RNK
------ ------ ------------- ---
3 30000 1 2
6 20000 2 2
12 20000 5 2
13 20000 5 2
私に質問をしてください。 –
あなたのお問い合わせは、あなたのことがあなたのものだと思われるようです。あなたの問題は何ですか? –
**あなたの質問に** [EDIT] **し、[サンプルデータ](http://plaintexttools.github.io/plain-text-table/)とそのデータに基づいて予想される出力を追加してください。 [**フォーマットされたテキスト**](http://stackoverflow.com/help/formatting)、** **スクリーンショットはありません**(http://meta.stackoverflow.com/questions/285551/why-may -i-not-upload-images-of-code-on-so-asking-a-question/285557#285557)。 ** [編集] **あなたの質問 - コメントを投稿するコードや追加情報はありません**。 –