0

次のようなテーブルがあります。

Row     Student   Major      
 1        Jenn    Math
 2        Jenn    Science
 3        Jenn    CS
 4        Mark    English
 5        Mark    History
 6        Steve   Math 
 7        Steve   Science
 8        Steve   Engineering
 9        Ann     Biology
 10       Ann     Chemistry

私は、学生が専攻を数学から科学に変更し、次に 3 番目の専攻に変更してそれらの値にフラグを立てる連続した行のパターンを探しているので、次のようになります。

 Row     Name    Major      Flagged_Values
 1        Jenn    Math
 2        Jenn    Science
 3        Jenn    CS                1
 4        Mark    English
 5        Mark    History
 6        Steve   Math 
 7        Steve   Science
 8        Steve   Engineering       1
 9        Ann     Biology
 10       Ann     Chemistry

この場合、生徒の Jenn と Steve はその基準を満たしているため、1 のフラグが付けられます。

次に、数学、科学、工学を連続して専攻した学生 (この場合はスティーブ) にフラグを付け、1 を含む別の列を追加します。私の質問は、これらのパターンにフラグを付けるための 2 つの別個のステートメントがあり、後で両方の基準が満たされている値にフラグを付けたい場合、どうすればよいですか? addBatchメソッドを使用しますか?コードはありますが、目的の結果が得られません。Oracle データベースを使用する SQL ライブラリで Java (JDBC) を使用しています。

String x = "SELECT STUDENTS.ROW, STUDENTS.MAJOR, STUDENTS.NAME " +
  "CASE WHEN prior_row.NAME IS NOT NULL" +
  "AND EXISTS(SELECT 'x' FROM STUDENTS prior_row " +
  "WHERE STUDENTS.MAJOR = prior_row.MAJOR" +
  "AND STUDENTS.ROW > prior_row.ROW + 1" +
  "SELECT STUDENTS.MAJOR, STUDENTS.ROW, STUDENTS.NAME WHERE" +
  "MAJOR < (SELECT MAJOR FROM STUDENTS WHERE MAJOR = 'MATH' 
  "AND WHERE MAJOR > (SELECT MAJOR FROM STUDENTS WHERE MAJOR = 'SCIENCE' THEN 1 ELSE NULL END Flagged_Values";

  st.addBatch(x);

String y = "SELECT STUDENTS.ROW, STUDENTS.MAJOR, STUDENTS.NAME" +
  "CASE WHEN previous.NAME IS NOT NULL" +
  "AND EXISTS(SELECT 'y' FROM STUDENTS previous" +
  "WHERE STUDENTS.MAJOR = previous.MAJOR" +
  "AND STUDENTS.ROW > previous.ROW + 1" +
  "SELECT STUDENTS.MAJOR, STUDENTS.ROW, STUDENTS.NAME WHERE" +
  "MAJOR < (SELECT THE_OUTCOME FROM STUDENTINFO WHERE MAJOR ='Math' +
  "AND WHERE MAJOR > (SELECT MAJOR FROM STUDENTS WHERE MAJOR = 'SCIENCE'" +
  "AND WHERE MAJOR > (SELECT MAJOR FROM STUDENTS WHERE MAJOR = 'Engineering'
  "THEN 1 ELSE NULL END Flag ";

  st.addBatch(y);

連続したインスタンスを比較しようとしています。2 番目の質問: これはデータ マイニングと見なされますか? どんな助けでも大歓迎です。

4

0 に答える 0