Как стать автором
Обновить

Комментарии 9

select distinct tt.supplier as supplier
      from test_supply tt
      union all
      select 'total_sum'
      order by supplier


Это неправильный вариант, т.к. после сортировки total_sum может оказаться в любом месте списка. Необходимо делать отдельную сортировку по supplier в подзапросе запроса стоящего перед union all.

А еще использование int8 для сумм вместо bigint — очень сомнительное решение.
Да, вы правы (я поменял оба пункта в статье). На счет типа данных: для этих тестовых данных достаточно int8 (хотя на практике действительно почти всегда будет нужен bigint).

Bigint и int8 — это ведь одно и то же. Или в какой-то базе это не так?

Выражусь точнее: для тестов всё равно. Но naming convention в PosgreSQL (о котором шла речь) предполагает использование именно bigint, поэтому на практике лучше всегда писать именно так
Просто чуть выше автор топил отказ от использования вендор-специфичных фич (filter в postgresql/sqlite, хотя, честно говоря, он удобен своей выразительностью и не вижу причин не использовать его в проектах, завязанных на PostgreSQL, в которых БД — не просто хранилище), а тут использует int8 вместо стандартного bigint.
Кстати, само название типов в postgresql по количеству байт (а не бит, как принято в большинстве ЯП) мне кажется сомнительным решением. Я первоначально перепутал, чем был вызван слишком категоричный тон замечания про int8.

Ага, вот и мне показалось, что возникло недоразумение.
А названия спорные, факт. Но int2 и int4 уже в Postgres95 были, а то и раньше, так что — "исторически сложилось".

Ну с int2/int4 альтернативных трактований нет, если только мы не говорим про старые специфичные архитектуры. А вот int8 уже может пониматься двояко.

На редкость приятная и полезная статья!

Добавлю в избранное

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории