かわいいリレーショナルデータベースにかわいい集計処理を実装した

リレーショナルデータベースの勉強用にかわいいデータベース作っています。
http://d.hatena.ne.jp/nowokay/20120817#1345197962


で、とりあえずorder byを実装してみました。こんな感じで。

System.out.println(Query //安い順に並べ替え
        .from("shohin")
        .orderBy("price"));

そしたら、金額順に並べ替えられます。

 |shohin.shohin_id|shohin.shohin_name|shohin.kubun_id|shohin.price|
 |2|みかん|1|130|
 |6|しいたけ|4|180|
 |3|キャベツ|2|200|
 |4|さんま|3|220|
 |5|わかめ|null|250|
 |1|りんご|1|300|
 |7|ドリアン|1|null|


あと、集計のgroup byもできるようにしました。集計関数はカウントと平均だけだけど。

System.out.println(Query //集計
        .from(Query
            .from("shohin")
            .groupBy("kubun_id", new Count("shohin_name"), new Average("price")))
        .leftJoin("kubun", "kubun_id")
        .select("kubun_id", "kubun_name", "count", "average"));

なんか、ちゃんと集計できました!

 |kubun_id|kubun_name|count|average|
 |1|くだもの|3|215.0|
 |2|野菜|1|200.0|
 |3|魚|1|220.0|
 |4|null|1|180.0|


集計は、一度集計フィールドで並べ替えてからまとめるような実装にしています。


これで、select文の各句が一応実装できたことになりますね。やった!


ソースはこちら。
https://gist.github.com/3380142/422c82d3bc963201b2ce78bbba593d9c452c4563