Java 8 + JavaFXを使用時間の経過とともにJava 8の複合グループ化
私はいくつかのデータ分析を行い、結果をXYチャートに出力しようとしています。 私自身が離れ平方私のチャートを得ている、とのように、それは構造を受け付けますので、
public class funds{
private long id;
private String userName;
private BigDecimal current;
private Timestamp createdAt;
....constructors/getters/setters....
}
funds
オブジェクトはすべてのために作成されるように私のデータは、カスタムオブジェクトに格納されて
ObservableList<Data<Timestamp, BigDecimal>>
1分間隔で定期的にTask
に送信します。
私は時間平均の合計をのfunds.current
と表記したいと思います。 だから、私は通常、すべてのユーザーに対して1分ごとに合計し、1時間ごとに平均します。
SELECT FLOOR(UNIX_TIMESTAMP(created_at)/(60*60)) AS hour, AVG(current)
FROM (
SELECT FLOOR(UNIX_TIMESTAMP(created_at)/60) AS minute, SUM(current) as current, created_at
FROM funds
GROUP BY minute
) as table1
GROUP BY hour;
をしかし、この例では、私が直接SQLアクセスを持っていない、とJavaを使用する必要があります。MySQLでは、私はこれを行うことができます。私はストリームとCollectors.groupingBy
を見てみましたが、私は私の欲しいものを得るために十分に私の頭を包み込むことはできません。
またCollectors
ダブルスは、財務データのために完全にひどいと、私は必要のBigDecimal、で使用するためのあらゆる機能を持っていないように見えます。
誰でも正しい方向に向けることができますか?あなたが本当にダブルスを使用したくない場合は
を私はこれを学ぶための方法を提案しているいくつかの簡単なテストケースを作るために、様々な 'groupingBy()'コレクターにして実験します彼らが何をし、どのようにそれらを使用することができます参照してください。インナーセレクトのテーブル(「資金」)を表す小さなデータストリームから始め、インナーセレクトだけを実行しようとします。その結果を外側のselectのための別の 'groupingBy()'に渡します。 –