Begin;
Initialize;
InitializeSession "";
Command "create database TESTDB";
TerminateSession;

InitializeSession "TESTDB";

######################################################################
# メインテーブル
Command  "create table T(C1 int, C2 varchar(2), C3 nvarchar(4), C4 int, C5 nvarchar(32))";
Command  "create index I_1 on T(C1)";
Command  "create index I_2 on T(C2)";
Command  "create index I_3 on T(C3)";
Command  "create index I_4 on T(C4)";
Command  "create index I_5 on T(C5)";
Command  "insert into T (C1, C2, C3, C4, C5) values (?, ?, ?, ?, ?)" [ 1, "1", "ほげ", 111,  textsjisfile "..\\..\\doc\\hello.txt"];
Command  "insert into T (C1, C2, C3, C4, C5) values (?, ?, ?, ?, ?)" [ 2, "1", "ホゲ", 222,  null                                 ];
Command  "insert into T (C1, C2, C3, C4, C5) values (?, ?, ?, ?, ?)" [ 3, "2",  null,  222,  null                                 ];
Command  "insert into T (C1, C2, C3, C4, C5) values (?, ?, ?, ?, ?)" [ 4, "3", "ホゲ", 222,  textsjisfile "..\\..\\doc\\hello.txt"];
Command  "insert into T (C1, C2, C3, C4, C5) values (?, ?, ?, ?, ?)" [ 5, "4", "ホゲ", null, textsjisfile "..\\..\\doc\\hello.txt"];
Command  "insert into T (C1, C2, C3, C4, C5) values (?, ?, ?, ?, ?)" [ 6, "1", "ぴよ", 333,  textsjisfile "..\\..\\doc\\hello.txt"];
Command  "insert into T (C1, C2, C3, C4, C5) values (?, ?, ?, ?, ?)" [ 7, "2",  null,  333,  textsjisfile "..\\..\\doc\\hello.txt"];
Command  "insert into T (C1, C2, C3, C4, C5) values (?, ?, ?, ?, ?)" [ 8, "3", "ぴよ", 333,  textsjisfile "..\\..\\doc\\ricoh.txt"];
Command  "insert into T (C1, C2, C3, C4, C5) values (?, ?, ?, ?, ?)" [ 9, "1", "ピヨ", 444,  textsjisfile "..\\..\\doc\\ricoh.txt"];
Command  "insert into T (C1, C2, C3, C4, C5) values (?, ?, ?, ?, ?)" [10, "2", "ピヨ", null, null                                 ];
Command  "insert into T (C1, C2, C3, C4, C5) values (?, ?, ?, ?, ?)" [11, "3", "ピヨ", 444,  textsjisfile "..\\..\\doc\\ricoh.txt"];
Command  "insert into T (C1, C2, C3, C4, C5) values (?, ?, ?, ?, ?)" [12, "5",  null,  null, textsjisfile "..\\..\\doc\\ricoh.txt"];
Command  "insert into T (C1, C2, C3, C4, C5) values (?, ?, ?, ?, ?)" [13, "2",  null,  null, null                                 ];

Command  "select C5 from T group by C5 having C5 like (?)" ["株式会社リコー%"];

# --and付き
Command  "select C5 from T group by C5 having C5 like (?) and C5 like (?)" ["株式会社リコー%", "株式会社リコー%"];

# --max
Command  "select C1 from T group by C1 having max(C5) like (?)" ["株式会社リコー%"];
Command  "select C2 from T group by C2 having max(C5) like (?)" ["株式会社リコー%"];
Command  "select C3 from T group by C3 having max(C5) like (?)" ["株式会社リコー%"];
Command  "select C4 from T group by C4 having max(C5) like (?)" ["株式会社リコー%"];
Command  "select C5 from T group by C5 having max(C5) like (?)" ["株式会社リコー%"];

# --min
Command  "select C1 from T group by C1 having min(C5) like (?)" ["株式会社リコー%"];
Command  "select C2 from T group by C2 having min(C5) like (?)" ["株式会社リコー%"];
Command  "select C3 from T group by C3 having min(C5) like (?)" ["株式会社リコー%"];
Command  "select C4 from T group by C4 having min(C5) like (?)" ["株式会社リコー%"];
Command  "select C5 from T group by C5 having min(C5) like (?)" ["株式会社リコー%"];

# -- --and付き
Command  "select max(C5) from T group by C5 having max(C5) like (?) and max(C5) like (?)" ["株式会社リコー%", "株式会社リコー%"];
Command  "select min(C5) from T group by C5 having min(C5) like (?) and min(C5) like (?)" ["株式会社リコー%", "株式会社リコー%"];

# --count, --max
Command  "select count(*) from T group by C5 having max(C5) like (?)" ["株式会社リコー%"];

Command  "select count(C5) from T group by C1 having max(C5) like (?)" ["株式会社リコー%"];
Command  "select count(C5) from T group by C2 having max(C5) like (?)" ["株式会社リコー%"];
Command  "select count(C5) from T group by C3 having max(C5) like (?)" ["株式会社リコー%"];
Command  "select count(C5) from T group by C4 having max(C5) like (?)" ["株式会社リコー%"];
Command  "select count(C5) from T group by C5 having max(C5) like (?)" ["株式会社リコー%"];


# --count, --min
Command  "select count(*) from T group by C5 having min(C5) like (?)" ["株式会社リコー%"];

Command  "select count(C5) from T group by C1 having min(C5) like (?)" ["株式会社リコー%"];
Command  "select count(C5) from T group by C2 having min(C5) like (?)" ["株式会社リコー%"];
Command  "select count(C5) from T group by C3 having min(C5) like (?)" ["株式会社リコー%"];
Command  "select count(C5) from T group by C4 having min(C5) like (?)" ["株式会社リコー%"];
Command  "select count(C5) from T group by C5 having min(C5) like (?)" ["株式会社リコー%"];

# --max, --min
Command  "select max(C5) from T group by C1 having min(C5) like (?)" ["株式会社リコー%"];
Command  "select max(C5) from T group by C2 having min(C5) like (?)" ["株式会社リコー%"];
Command  "select max(C5) from T group by C3 having min(C5) like (?)" ["株式会社リコー%"];
Command  "select max(C5) from T group by C4 having min(C5) like (?)" ["株式会社リコー%"];
Command  "select max(C5) from T group by C5 having min(C5) like (?)" ["株式会社リコー%"];

# --min, --max
Command  "select min(C5) from T group by C1 having max(C5) like (?)" ["株式会社リコー%"];
Command  "select min(C5) from T group by C2 having max(C5) like (?)" ["株式会社リコー%"];
Command  "select min(C5) from T group by C3 having max(C5) like (?)" ["株式会社リコー%"];
Command  "select min(C5) from T group by C4 having max(C5) like (?)" ["株式会社リコー%"];
Command  "select min(C5) from T group by C5 having max(C5) like (?)" ["株式会社リコー%"];

# --同列
Command  "select C5, count(C5), max(C5) from T group by C5 having max(C5) like (?)" ["株式会社リコー%"];
Command  "select count(C5), C5, max(C5) from T group by C5 having max(C5) like (?)" ["株式会社リコー%"];
Command  "select count(C5), max(C5), C5 from T group by C5 having max(C5) like (?)" ["株式会社リコー%"];

Command  "select C5, count(C5), max(C5) from T group by C5 having min(C5) like (?)" ["株式会社リコー%"];
Command  "select count(C5), C5, max(C5) from T group by C5 having min(C5) like (?)" ["株式会社リコー%"];
Command  "select count(C5), max(C5), C5 from T group by C5 having min(C5) like (?)" ["株式会社リコー%"];

# -- --and付き
Command  "select C5, count(C5), max(C5) from T group by C5 having count(C5) > (?) and max(C5) like (?)" [0.0, "株式会社リコー%"];
Command  "select count(C5), C5, max(C5) from T group by C5 having count(C5) > (?) and max(C5) like (?)" [0.0, "株式会社リコー%"];
Command  "select count(C5), max(C5), C5 from T group by C5 having count(C5) > (?) and max(C5) like (?)" [0.0, "株式会社リコー%"];

Command  "select C5, count(C5), max(C5) from T group by C5 having min(C5) like (?) and min(C5) like (?)" ["株式会社リコー%", "株式会社リコー%"];
Command  "select count(C5), C5, max(C5) from T group by C5 having min(C5) like (?) and min(C5) like (?)" ["株式会社リコー%", "株式会社リコー%"];
Command  "select count(C5), max(C5), C5 from T group by C5 having min(C5) like (?) and min(C5) like (?)" ["株式会社リコー%", "株式会社リコー%"];

# --異列
# -- --and付き
Command  "select C1, count(C2), max(C3) from T group by C1 having min(C4) > (?) and min(C5) like (?)" [222, "株式会社リコー%"];
Command  "select count(C2), C1, max(C3) from T group by C1 having min(C4) > (?) and min(C5) like (?)" [222, "株式会社リコー%"];
Command  "select count(C2), max(C3), C1 from T group by C1 having min(C4) > (?) and min(C5) like (?)" [222, "株式会社リコー%"];

Command  "select C2, count(C3), max(C4) from T group by C2 having min(C5) like (?) and min(C1) > (?)" ["株式会社リコー%", 3.0];
Command  "select count(C3), C2, max(C4) from T group by C2 having min(C5) like (?) and min(C1) > (?)" ["株式会社リコー%", 3.0];
Command  "select count(C3), max(C4), C2 from T group by C2 having min(C5) like (?) and min(C1) > (?)" ["株式会社リコー%", 3.0];

######################################################################

# tableの後始末
Command "drop table T";

TerminateSession;

InitializeSession "";
Command "drop database TESTDB";
TerminateSession;
Terminate;
End;
