前提・実現したいこと
SQLiteにて、AVERAGEを一度に複数取り出したいです。
DBは「RESULT_TABLE」に「INTEGER型のID」、「TEXT型のNAME」、「INTEGER型のJAPANESE_POINT、MATHEMATICS_POINT、ENGLISH_POINT」が合計100行入っております。
このうちINTEGERの3種のレコードの平均値をSQLのAVERAGEを用いて取り出したいです。
下記「試したこと」にあるとおり複数処理に分けて取り出すのは出来るのですが、一度に取り出すのはどうすればよろしいのでしょうか。
該当のソースコード
C#
1 string connectionString = String.Format("Data Source ={0};Version=3;", dbFile); 2 con = new SQLiteConnection(connectionString); 3 con.Open(); 4 com = con.CreateCommand(); 5 6 // 3教科平均 7 com.CommandText = "SELECT AVG(JAPANESE_POINT),(MATHEMATICS_POINT),(ENGLISH_POINT) FROM RESULT_TABLE;"; 8 reader = com.ExecuteReader();
「JAPANESE_POINT」「MATHEMATICS_POINT」「ENGLISH_POINT」を読み込みたいが、どうすればいいか分からない。
string japaneseAverage = com.ExecuteReader()["AVG(JAPANESE_POINT)"].ToString();
としてもNo current rowと表示され該当の行が読み込めていない。
試したこと
SQL文を複数行に分けて記述すると読み込めます。
C#
1 string connectionString = String.Format("Data Source ={0};Version=3;", dbFile); 2 con = new SQLiteConnection(connectionString); 3 con.Open(); 4 com = con.CreateCommand(); 5 6 // 国語平均 7 com.CommandText = "SELECT AVG(JAPANESE_POINT) FROM RESULT_TABLE;"; 8 string japaneseAverage = com.ExecuteScalar().ToString(); 9 10 // 数学平均 11 com.CommandText = "SELECT AVG(MATHEMATICS_POINT) FROM RESULT_TABLE;"; 12 string mathematicsAverage = com.ExecuteScalar().ToString(); 13 14 // 英語平均 15 com.CommandText = "SELECT AVG(ENGLISH_POINT) FROM RESULT_TABLE;"; 16 string englishAverage = com.ExecuteScalar().ToString();
どなたか回答よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/14 10:46