PostgreSQL: порядок по сумме вычисленных значений

У меня есть таблица 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}

Не мог бы кто-нибудь указать мне правильное направление?

6
задан That1Guy 13 November 2015 в 21:10
поделиться