ランクを必要とする複雑なクエリがあります。これを行う標準的な方法は、このページhttp://thinkdiff.net/mysql/how-to-get-rank-using-mysql-query/にある手法を使用することであることがわかりました。バックエンドとして Infobright を使用していますが、期待どおりに動作しません。つまり、標準の MySQL エンジンではランクが 1、2、3、4 などと表示されますが、Brighthouse (Infobright のエンジン) は 1、1、1、1 などを返します。変数、関数を設定し、クエリで実行する戦略。まさにそれを行う概念実証クエリを次に示します。
SET @rank = 0;
DROP FUNCTION IF EXISTS __GetRank;
DELIMITER $$
CREATE FUNCTION __GetRank() RETURNS INT
BEGIN
SET @rank = @rank + 1;
return @rank;
END$$
DELIMITER ;
select __GetRank() AS rank, id from accounts;
次に、関数をコピーして Jasper Report の iReport に貼り付け、レポートをコンパイルしました。実行後、構文エラーが発生します。だから私はおそらくそれを考えました; 捨てていました。そのため、クエリの先頭に DELIMITER ; を挿入しました。これもうまくいきませんでした。
私がやりたいことは可能ですか?もしそうなら、どのように?また、関数を記述せずにランクを取得する Infobright の方法があれば、それも受け入れます。