2017-08-17 6 views
-1

200人の学生と6人の科目があるとします。私たちは、サブジェクト名と一緒に対象ごとの最高得点を必要とし、出力としてスコアユニオンを使用せずに列ごとに最高の価値を得る

Name | Subject | Highest Score 

:入力列は

Name | Subject1 | Subject2 | ... through Subject 6 

出力はわずか3列があります。 Informaticaレベルではどのようにこれを行いますか?組合を使わずにSQLレベルでどのようにしたらいいですか?

サンプルデータ:インフォマティカで

Name |Sub1 |Sub2 |Sub3 |Sub4 |Sub5 |Sub6 
-----+-----+-----+-----+-----+-----+---- 
A |5 |67 |77 |6 |34 |43 
B |54 |54 |32 |3 |23 |21 
C |1 |23 |43 |45 |43 |21 
+0

を世話をするMAX(SCORE)を有する被験者によってGROUPように聞こえます。サンプルデータや出力のような情報がありますか? – Simon

+0

私は 'DECODE' – scsimon

+0

を使って条件集合を推測しています。サンプルデータとしてこれを考える: I/P: 名Sub1をSUB2 SUB3 SUB4 SUB5 SUB6 B 54 54 32 3 23 21 C 1 23 43 45 43 21 O/P: 名前sub_nameサブ最高 B Sub1を54 A SUB2 67 A SUB3 77 C SUB4 45 C SUB5 43 A SUB6 43 –

答えて

0

簡単、(昇順)得点後、被験者にセットでソートしてソーターを使用します。次に、サブジェクトごとにソートされた入力グループを持つアグリゲータ。

アンSQL GROUP BYそれから、すなわち

SELECT MAXSCORES.SUBJECT, MAXSCORES.TOPRESULT, RESULTS.STUDENT AS TOPSCORER 
FROM (SELECT SUBJECT, MAX(SCORE) AS TOPRESULT FROM RESULTS GROUP BY SUBJECT) AS MAXSCORES 
WHERE MAXSCORES.SUBJECT = RESULTS.SUBJECT AND MAXSCORES.TOPRESULT = RESULTS.SCORE 
関連する問題