前提・実現したいこと
お世話になっております。
SQLで苦戦しております。
自分でコードを書いて、動くことを確認したのですが、冗長に感じています。。。
短くする(※アルゴリズムの変更も含む)ことは可能でしょうか?
以下問題のテーブル(studentとtest)とレコードの図です。
student
id student_name
001 杏子
002 明日香
003 亜紀
004 小鳥
005 柚子
006 葵
test
id_subject result
001国語 65
002国語 70
002数学 50
003生物 100
003倫理 45
003数学 75
004物理 30
006地学 55
発生している問題・エラーメッセージ
コードは動くが、冗長に感じるため短くしたい
問題:1番高い点数を持つ生徒名とその点数、1番低い点数を持つ生徒名とその点数を出すSQL
結果
|小鳥 | 30 |
|亜紀 | 100 |
該当のソースコード
SQL
1SELECT s.id,t.result 2FROM student s 3JOIN test t 4ON s.id=SUBSTR(t.id_subject,1,3) 5LEFT JOIN(SELECT MAX(t.result)AS value FROM test t)max 6ON max.value=t.result 7LEFT JOIN(SELECT MINX(t.result)AS value FROM test t)min 8ON min.value=t.result 9WHERE max.value IS NOT NULL OR min.value IS NOT NULL;
試したこと
データを抜き出せることは確認しました。
補足情報(FW/ツールのバージョンなど)
SQLplus, Oracle11g