Size: a a a

2020 December 01

I

Igor in dbGeeks
in_stock по убыванию сортировать не нужно.
Порядок оставить нужно тот же самый, но нулевые значения в конец
источник

VK

Vladimir Karamazov in dbGeeks
Igor
in_stock по убыванию сортировать не нужно.
Порядок оставить нужно тот же самый, но нулевые значения в конец
А что, не работает, как я написал?
источник

VK

Vladimir Karamazov in dbGeeks
Как раз "сначала нулевые значения в конец" и сделает in_stock desc в качестве первой колонки для сортировки
источник

RN

Roma Nikulin in dbGeeks
Vladimir Karamazov
Как раз "сначала нулевые значения в конец" и сделает in_stock desc в качестве первой колонки для сортировки
in_stock может быть не только 0 и 1, очевидно
источник

VK

Vladimir Karamazov in dbGeeks
Ну это я понял. Булево значение Вы там организовали таким образом
источник

VK

Vladimir Karamazov in dbGeeks
Аа, стоп
источник

VK

Vladimir Karamazov in dbGeeks
Я думал только 0 и 1?
источник

RN

Roma Nikulin in dbGeeks
Vladimir Karamazov
order by in_stock desc, price asc
Я думаю, человеку нужно
order by (in_stock > 0) desc, price asc
источник

VK

Vladimir Karamazov in dbGeeks
@Westrow in_stock может быть только 0 и 1?
источник

I

Igor in dbGeeks
Vladimir Karamazov
@Westrow in_stock может быть только 0 и 1?
Нет, любое число
источник

I

Igor in dbGeeks
Roma Nikulin
Я думаю, человеку нужно
order by (in_stock > 0) desc, price asc
Вроде бы оно, спасибо))
источник

T

ThunderAL in dbGeeks
есть табличка с юзерами. у них есть столбец "score" надо получить первые 50 людей. надо для этих юзеров сделать рейтинг по score (чем это поле больше -- тем меньше число в рейтинге. на 1 месте в рейтинге стоит человек с самым большим значением score). места не дублируются: сколько людей -- столько мест. постгрес

надо:
* их место в рейтинге по тому полю
* какое-то выражение на подобие простого лимита чтобы показывать список с рейтингом постранично
* получить место в рейтинге по идентификатору юзера

CREATE TABLE public."user" (
 id serial NOT NULL DEFAULT nextval('user_id_seq'::regclass),
 score int4 NOT NULL DEFAULT 0,
);
источник

T

ThunderAL in dbGeeks
сейчас подумал, что вторая и првая "хотелка" изи делается через ордер бай и лимиты. а вот как достать рейтинг одного человека по ижентификатору или сразу нескольких, также по идентификатору я хз (есть идея делать select count(*) ... where score > ? но выглядит это как-то не правильно)
источник

EK

Evgeniy Kuvshinov in dbGeeks
там только пункт по "места не дублируются" не совсем понятен, возможно надо исключать одинаковые score надо будет через групировку или having
а так select * from user order by score desc limit 50
источник

T

ThunderAL in dbGeeks
Evgeniy Kuvshinov
там только пункт по "места не дублируются" не совсем понятен, возможно надо исключать одинаковые score надо будет через групировку или having
а так select * from user order by score desc limit 50
ну, эт самое простое))
а вот как выбрать двух юзеров по идентификатору вместе с их местом в рейтинге?
источник

T

ThunderAL in dbGeeks
Evgeniy Kuvshinov
там только пункт по "места не дублируются" не совсем понятен, возможно надо исключать одинаковые score надо будет через групировку или having
а так select * from user order by score desc limit 50
"места не дублируются" значит что не может быть два 5 места в рейтинге даже если у этих людей одинаковый score
источник

EK

Evgeniy Kuvshinov in dbGeeks
а что делать на 5 место ставить всех людей у кого одинаковый score или ставить только одно ?
источник

T

ThunderAL in dbGeeks
вообще я ожидал нечто
select *, (some magic) as rating from users ...
источник

EK

Evgeniy Kuvshinov in dbGeeks
ThunderAL
вообще я ожидал нечто
select *, (some magic) as rating from users ...
some magic => row_number()
источник

T

ThunderAL in dbGeeks
Evgeniy Kuvshinov
а что делать на 5 место ставить всех людей у кого одинаковый score или ставить только одно ?
по факту просто orderBy по score и плевать что значение у каких-то людей score одинаковый. это уже их проблема)
источник