前提・実現したいこと
SQLiteにて、AVERAGEを1行ずつ取り出したいです。
DBは「RESULT_TABLE」に「INTEGER型のID」、「TEXT型のNAME」、「INTEGER型のJAPANESE_POINT、MATHEMATICS_POINT、ENGLISH_POINT」が合計100行入っております。
このうちINTEGERの3種のレコードの平均値をSQLのAVERAGEを用いて取り出したいです。
下記「試したこと」にあるとおりwhere文を使えば取り出せるのですが、DBの平均値は一度読み込めばいいので、where文を使わずに1回の処理で読み込むにはどうすればよろしいでしょうか。
発生している問題・エラーメッセージ
SQLにて求めたAVGを取り出したい。
該当のソースコード
C#
1 // 接続文字列 2 string connectionString = String.Format("Data Source ={0};Version=3;", dbFile); 3 // DB Open 4 con = new SQLiteConnection(connectionString); 5 con.Open(); 6 com = con.CreateCommand(); 7 8 // 3教科平均 9 com.CommandText = "SELECT AVG(JAPANESE_POINT) AS 国語平均, AVG(MATHEMATICS_POINT) AS 数学平均, AVG(ENGLISH_POINT) AS 英語平均 FROM RESULT_TABLE;"; 10 reader = com.ExecuteReader(); 11 12 this.listView_Display.Items.Clear(); 13 while (reader.Read()) 14 { 15 string[] a = { 16 reader["国語平均"].ToString(), 17 reader["数学平均"].ToString(), 18 reader["英語平均"].ToString(), 19 }; 20 this.textBox_JapanesePointAvg.Text = a[0]; 21 this.textBox_MathematicsPointAvg.Text = a[1]; 22 this.textBox_EnglishPointAvg.Text = a[2]; 23 } 24一度だけ取り出せばいいAVGに対してwhile文は無駄なので、他の方法で取り出したい。
試したこと
Parametersを用いてデータを取り出そうとしたのですが、空文字しか取り出せませんでした。
C#
1 com.CommandText = "SELECT AVG(JAPANESE_POINT) AS 国語平均, AVG(MATHEMATICS_POINT) AS 数学平均, AVG(ENGLISH_POINT) AS 英語平均 FROM RESULT_TABLE;"; 2 reader = com.ExecuteReader(); 3 4 string japanesePoint = string.Empty; 5 com.Parameters.Add(new SQLiteParameter("@国語平均", japanesePoint));
回答お願いいたします。
補足情報(FW/ツールのバージョンなど)
SQLはSQLiteを使用しています。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/05 14:33