0

アップロードしたスプレッドシートからコンテンツを取得するために、Java と SQL を組み合わせて使用​​しています。また、Oracle データベースも使用しています。各生徒の名前の列があり、平均の列があり、たとえばクラス全体の平均を取得したい場合、個々の生徒の平均がクラスの平均よりも大きいかどうかを確認し、それらを入れますこれらの基準を満たす学生を別の表に記入するにはどうすればよいですか? アイデアはありますが、これが正しいかどうかはわかりません。私が間違っている場合は修正してください。

//Select student averages so I can get each student's individual score
resultset = st.executeQuery("SELECT Student_Averages FROM table");
//Get the class average 
stavg = "SELECT Avg(Student_Averages)) AS classAverage FROM table";
rs = st.executeQuery(stavg);
//Iterate through their individual scores and store them in a float variable to 
//compare them later.
while(resultset.next()){
    float studentaverage = resultset.getFloat("Student_Averages");
}   
//Store the class average in a float variable            
float classaverage = stavg.getFloat("Student_Averages"); 
//Compare the individual student average to the class average
if(studentaverage >= classaverage){
//Generate new table with student names
}    

私はデータベースを扱うのが初めてです。要件を満たす学生の名前を含む新しいテーブルを生成する方法がわかりません。助けていただければ幸いです!

4

1 に答える 1

0

まず、この宣言をループの外に移動します

while(resultset.next()){
    float studentaverage = resultset.getFloat("Student_Averages");
} 

第二に、あなたがしたので

stavg = "SELECT Avg(Student_Averages)) AS classAverage FROM table";

あなたは変わるべきです

float classaverage = stavg.getFloat("Student_Averages");

float classaverage = stavg.getFloat("classAverage");

最後にあなたの質問に:これを使ってテーブルを作成してください

st.executeUpdate("CREATE TABLE IF NOT EXISTS tableName (id INT , studentName VARCHAR(SIZE))");

次に、これを使用してデータをテーブルに挿入します

String insert = String.format("INSERT INTO tableName("id","studentName") VALUES ('%s','%s)" , idOfStudent someStudentName);

st.execute(intsert);
于 2013-07-05T15:26:34.213 に答える