У меня есть таблица tips
, которая определена следующим образом:
CREATE TABLE tips
(
tip_id bigserial NOT NULL,
tip text NOT NULL,
author text NOT NULL,
post_date bigint NOT NULL,
likers character varying(16)[],
dislikers character varying(16)[],
likes integer NOT NULL,
dislikes integer NOT NULL,
abuse_history character varying(16)[]
);
Мне нужно получить советы, основанные на популярности, с определением популярности:
likes - dislikes - (size(abuse_history)*5)
Запрос ниже дает мне одинаковые результаты независимо от порядка сортировки (ASC/DESC).
select * from tips order by (likes - dislikes - (array_length(abuse_history,1) * 5)) ASC limit 2147483647 offset 0
EDIT
Я вставил 3 записи, которые имеют следующие значения:
1) 1 нравится, 0 не нравится, 0 жалоб на оскорбления
2) 0 нравится, 1 не нравится, 0 жалоб на оскорбления
3) 0 "нравится", 0 "не нравится", 0 жалоб на оскорбления...
Независимо от порядка сортировки (ASC/DESC), я получаю следующий порядок: {3, 1, 2}
Не мог бы кто-нибудь указать мне правильное направление?