Это потому, что вы ввели третий параметр VARCHAR. Ответ «правильный», потому что это сортировка VARCHAR. Если бы вы ввели третий параметр INTEGER, вам, вероятно, хотелось бы получить намного лучший результат. т. е. ваше утверждение CREATE TABLE должно было быть:
CREATE TABLE 'rank' ( ID VARCHAR, KEY VARCHAR, VALUE INTEGER NOT NULL );
В противном случае, если ЗНАЧЕНИЕ должно оставаться как VARCHAR, вы должны попробовать следующее предложение выбора, чтобы разыграть его на лету, но, как говорили другие, это не очень хорошо для производительности:
SELECT ID, MIN(CAST(VALUE AS INTEGER)) FROM RANK GROUP BY ID;