Size: a a a

DBA - русскоговорящее сообщество

2021 March 20

oa

oleg aronov in DBA - русскоговорящее сообщество
А если в PG явно задать алиас, но сортировать по имени столбца? Я не уверен, но предполагаю что постгрес сам неявно алиасы "присваивает" для простых преобразований
источник

P

PavelDmitrenko in DBA - русскоговорящее сообщество
oleg aronov
А если в PG явно задать алиас, но сортировать по имени столбца? Я не уверен, но предполагаю что постгрес сам неявно алиасы "присваивает" для простых преобразований
Да, похоже, так и есть
SELECT value::integer as int_value FROM test order by value
— сортирует по строке
Интересный, в общем, нюанс
источник

IZ

Ilia Zviagin in DBA - русскоговорящее сообщество
oleg aronov
Любая СУБД, если ей передать в order by таблица.поле отсортирует по этому полю, а если псевдоним - то по тому, что за этим псевдонимом скрывается
Псевдоним там запрещено ставить.
Там либо выражение, либо ссылка на поле в списке вывода по номеру.

Если там можно в какой-то СУБД поставить имя поля в списке вывода, то это - нестандартное расширение этой данной СУБД.
источник

YS

Yaroslav Schekin in DBA - русскоговорящее сообщество
Ilia Zviagin
Псевдоним там запрещено ставить.
Там либо выражение, либо ссылка на поле в списке вывода по номеру.

Если там можно в какой-то СУБД поставить имя поля в списке вывода, то это - нестандартное расширение этой данной СУБД.
Смотря по какому стандарту... Вот пара цитат из документации postgres по этому поводу:

If an ORDER BY expression is a simple name that matches both an output column name and an input column name, ORDER BY will interpret it as the output column name. This is the opposite of the choice that GROUP BY will make in the same situation. This inconsistency is made to be compatible with the SQL standard.

> Там либо выражение, либо ссылка на поле в списке вывода по номеру.

In the SQL-92 standard, an ORDER BY clause can only use output column names or numbers, while a GROUP BY clause can only use expressions based on input column names. PostgreSQL extends each of these clauses to allow the other choice as well (but it uses the standard's interpretation if there is ambiguity). PostgreSQL also allows both clauses to specify arbitrary expressions. Note that
names appearing in an expression will always be taken as input-column names, not as output-column names.

SQL:1999 and later use a slightly different definition which is not entirely upward compatible with SQL-92. In most cases, however, PostgreSQL will interpret an ORDER BY or GROUP BY expression the same way SQL:1999 does.

"Стандартизаторы" отчасти сами виноваты, короче.
источник

NB

No longer Bag Holder in DBA - русскоговорящее сообщество
but it isn't running by that point
источник

В

Влад in DBA - русскоговорящее сообщество
Коллеги, подскажите, пожалуйста, какие книги почитать чтобы более оптимально создавать структуру бд.
имею ввиду когда можно обойтись уже сущестующими таблицами, а когда нет другого выбора кроме как создавать новую
источник

IZ

Ilia Zviagin in DBA - русскоговорящее сообщество
Влад
Коллеги, подскажите, пожалуйста, какие книги почитать чтобы более оптимально создавать структуру бд.
имею ввиду когда можно обойтись уже сущестующими таблицами, а когда нет другого выбора кроме как создавать новую
источник

В

Влад in DBA - русскоговорящее сообщество
Спасибо!
источник
2021 March 21

ВД

Владислав Денисович... in DBA - русскоговорящее сообщество
Подскажите, пожалуйста, из-за чего может произойти такая ошибка?
источник

O

Oleksii Miuskyi in DBA - русскоговорящее сообщество
Всем привет. Есть запрос.. он хорошо работает до 10000 строк в таблице.. с 100000 строк работает плохо. Как переделать под курсори? Я ще учусь буду рад помощи
источник

O

Oleksii Miuskyi in DBA - русскоговорящее сообщество
select json_agg(row_to_json(t)) as data,(select count(*) from  backend.broadcast where type_broad=1 ) as count from (  select * from backend.broadcast where type_broad=1) t
источник

O

Oleksii Miuskyi in DBA - русскоговорящее сообщество
select count * насколько понимаю тормозит
источник

IZ

Ilia Zviagin in DBA - русскоговорящее сообщество
Владислав Денисович
Подскажите, пожалуйста, из-за чего может произойти такая ошибка?
Сетевые проблемы
источник

IZ

Ilia Zviagin in DBA - русскоговорящее сообщество
select
  json_agg(row_to_json(t)) as data,
 (select count(*) from  backend.broadcast where type_broad=1 ) as count
from  backend.broadcast t
where type_broad=1



Да это просто кусок дерьма а не запрос, его надо выкинуть,а не переделывать
источник

O

Oleksii Miuskyi in DBA - русскоговорящее сообщество
Ilia Zviagin
select
  json_agg(row_to_json(t)) as data,
 (select count(*) from  backend.broadcast where type_broad=1 ) as count
from  backend.broadcast t
where type_broad=1



Да это просто кусок дерьма а не запрос, его надо выкинуть,а не переделывать
А как лучше сделать?
источник

IZ

Ilia Zviagin in DBA - русскоговорящее сообщество
Oleksii Miuskyi
А как лучше сделать?
А что ты хочешь сделать для начала?
источник

O

Oleksii Miuskyi in DBA - русскоговорящее сообщество
Ilia Zviagin
А что ты хочешь сделать для начала?
Задача сделать пагинацию - тоесть отгружать данные частями, а не все записи целиком. Offset и limit получаю данние. Это все для api.
источник

O

Oleksii Miuskyi in DBA - русскоговорящее сообщество
Так норм? Select json_agg(rw) as data, max(cnt) as count from (select row_to_json(broadcast.*) as rw, count(*) over () as cnt from backend.broadcast where type_broad =1 limit 5) q
источник

IZ

Ilia Zviagin in DBA - русскоговорящее сообщество
Oleksii Miuskyi
Задача сделать пагинацию - тоесть отгружать данные частями, а не все записи целиком. Offset и limit получаю данние. Это все для api.
Идиотская задача.
источник

IZ

Ilia Zviagin in DBA - русскоговорящее сообщество
Oleksii Miuskyi
Так норм? Select json_agg(rw) as data, max(cnt) as count from (select row_to_json(broadcast.*) as rw, count(*) over () as cnt from backend.broadcast where type_broad =1 limit 5) q
Нет, так ничего не лучше.
источник