背景:私は、Apache Commonsの数学を使用して救急車の統計を決定しようとしています 。私は1つの救急車について非常に基本的な単変量統計を行うことができますが、私は自分の艦隊内のすべての救急車の統計を決定したいときに立ち往生します。ループ
目標: 私の目標は、その後の統計情報に情報を解析、JDBCを使用して、基本的な結果セットを生成することです。例えば、私は結果セットを取って、救急車を示すテーブル、2014年の平均、2015年の平均をヘッダーのように見せたいと思います。 表の詳細は、各救急車と各ヘッダーの平均値を示すだろう
<table>
<tr><th>ambulance</th><th>average response time for year 2014</th><th>average response time for year 2015</th></tr>
<tr><td>Medic1</td><td>62</td><td>74</td></tr>
<tr><td>Medic2</td><td>83</td><td>79</td></tr>
<tr><td>Medic3</td><td>68</td><td>71</td></tr>
</table>
しようとしました擬似コード: 次のようになり擬似コード。 )暦年の平均応答時間の変数を割り当てます。 )暦年が2014年の場合は結果セット内のすべての救急車をループして平均を計算します。 3.)暦年の2015平均応答時間の変数を割り当てます。 4.)すべての救急車を巡回し、暦年が2015であれば平均を計算します。 5)出力救急車、2014年の平均応答時間、2015
コメントの平均応答時間: これは良いスタートになります。少なくとも論理と形式は、年々の相違を決定するなど、より洗練された分析を行うために存在します。しかし、私は立ち往生しています。私は平均を生成するために各救急車に反復を行う方法がわかりません。
私は、各救急車の平均を生成するSQLクエリを書くことができます。しかし、私はApache Commons Mathを使っています。なぜなら、Skew、Kurtosisなどの手段を提供しているからです。この段落の上に表示されているのは、より複雑なものの単純化された例です。
Javaコード:
package EMSResearch;
import java.sql.*;
import org.apache.commons.math3.stat.descriptive.DescriptiveStatistics;
public class EMSResearch
{
public static void main(String[] args)
{
Connection conn = null;
Statement stmt = null;
try
{
conn = DriverManager.getConnection("jdbc:sqlserver://MyDatabase;database=Emergencies;integratedsecurity=false;user=MyUserName;password=MyPassword");
stmt = conn.createStatement();
String strSelect = "SELECT EmergencyID, YearOfCall, ResponseTime, Ambulance";
ResultSet rset = stmt.executeQuery(strSelect);
DescriptiveStatistics ds = new DescriptiveStatistics();
/*the following code does the job of generating average response time for Medic1 for year 2015. But I want it to loop through and get all the ambulances for year 2015*/
while (rset.next())
{
if (rset.getString("Ambulance").equals("Medic1") && rset.getInt("YearOfCall") == 2015)
{
String event = rset.getString("I_EventNumber");
int year = rset.getInt("YearOfCall");
int responseTime = rset.getInt("ResponseTime");
String truck = rset.getString("Ambulance");
ds.addValue(responseTime);
}
}
System.out.println("mean average value " + ds.getMean());
} catch (SQLException ex)
{
ex.printStackTrace();
} finally
{
代わりに[SQLウィンドウ関数](https://msdn.microsoft.com/en-us/library/ms189461%28v=sql.110%29.aspx)を使用することを検討してください。 –
それは私が通常行うことですが、この場合、私はApache Commons Mathを使いたいと思っていました。スキューと尖度のためのメソッドがあるからです。また、熟練したら、より多くのクールな統計機能を実行できます。 –