0

テーブルの 1 つの列から同じ値をカウントし、値とカウンターを返そうとしています。たとえば、値 1 は 3 回繰り返し、値 2 は 2 回繰り返します...

これまでのところ、私のプログラムは目的の列のすべての値を配列に格納できます。私の問題は、各値を他の値と比較する方法がわからないことです。カウンターと、おそらくもう 1 つの配列が必要であることはわかっています。だから私はIf条件で立ち往生しました。

try{
  Statement stmt = conn.createStatement();
//Statement stmt1 = conn.createStatement();

ResultSet rset = stmt.executeQuery( "SELECT N_REGIONKEY FROM NATION " );

List N_REGIONKEY = new ArrayList ();
while (rset.next()){

  N_REGIONKEY.add(rset.getInt("N_REGIONKEY"));
  if (rset.next ==N_REGIONKEY){
           .
           .
           .

   }
  //System.out.println(N_REGIONKEY);
 }
}

これは私があなたの助けを借りて書いたものの新しいバージョンですが、それでも答えはあるべきものではありません..

try{

  System.out.println("counting rows in NATION table");

  Statement stmt = conn.createStatement();

//  Statement stmt1 = conn.createStatement();

  ResultSet rset = stmt.executeQuery( "SELECT N_REGIONKEY FROM NATION " );

  ArrayList N_REGIONKEY = new ArrayList ();

  while (rset.next()){

      N_REGIONKEY.add(rset.getInt("N_REGIONKEY"));

      int occurrences = 0;  

      for (int i = 0; i<N_REGIONKEY.size();i++)
{    
occurrences = Collections.frequency(N_REGIONKEY,N_REGIONKEY.get(i) );

System.out.println("There is " + occurrences + "occurrences for " + N_REGIONKEY.get(i));

}
4

3 に答える 3

0
int occurrences = 0;
for (int i = 0; i<N_REGIONKEY.size();i++){
occurrences = Collections.frequency(REGIONKEY, REGIONKEY.get(i));
System.out.println("There is " + ocurrences "ocurrences for " + N_RegionKey.get(i));
}
于 2013-04-24T01:34:16.160 に答える
0

配列ではなくSQLクエリでカウントしてみてください

select N_REGIONKEY, count(N_REGIONKEY) as 'COUNT' 
FROM NATION
group by N_REGIONKEY
于 2013-04-24T01:59:21.650 に答える
0

最後に、このプログラムを group by なしで作成しました (ただし、はるかに遅いことはわかっています)。これは、「group by」と同じ結果になります。

  try{

System.out.println("NATION テーブルの類似行のカウント");

ステートメント stmt = conn.createStatement();

ResultSet rset = stmt.executeQuery( "SELECT N_REGIONKEY FROM NATION" );

ArrayList N_REGIONKEY = new ArrayList ();

int[] MyCounter = 新しい int[5];

while (rset.next()){

  MyCounter[rset.getInt("N_REGIONKEY")] ++;

}

for (int i = 0; i<5;i++){

    if (MyCounter[i] > 0) {

        System.out.println("There is " + MyCounter[i] + " ocurrences for " + i);
    }
于 2013-04-29T00:28:08.777 に答える