次のようなテーブルがあります。
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 番目の質問: これはデータ マイニングと見なされますか? どんな助けでも大歓迎です。