Сортировка в неалфавитном порядке в postgresql - PullRequest
0 голосов
/ 18 марта 2019

Я автоматизирую процесс на работе, где вывод должен быть в определенном не алфавитном порядке в зависимости от имени (internal_product, type text) в дополнение к числу (type text). Сначала я запускаю подзапрос, где собираю информацию из четырех немного разных таблиц с помощью объединений. Затем я добавляю результат с union перед внешними group by суммами единиц и сумм. Псевдо-запрос выглядит следующим образом:

select name, number, internal_product, sum(units), sum(amount) from (
 select fields, sum(x)
  from t1
  join join-conditions
  join join-conditions
  group by name, number, internal_product
 union

.....

 select fields, sum(x)
  from t5
  join join-conditions
  join join-conditions
  group by name, number, internal_product
) as foo
group by name, number, internal_product
order by number, name;

Я попытался изменить столбец в вспомогательной таблице, используемой в одном из объединений, на тип enum, поскольку он используется во внешнем group by ( SO-thread ), но типе столбца конечно, в условии соединения должно быть то же самое, чтобы измененный запрос был недействительным. Существует 30 наименований продуктов, поэтому я хотел бы избежать использования CASE name, как это предлагается gbn и Guffa.

Существуют ли другие способы применения определенного порядка в order by?

1 Ответ

1 голос
/ 18 марта 2019

Это может быть излишним или сложным для вашего случая, но вы можете создать собственную сортировку в postgres для сортировки, как вы хотите. Посмотрите на документацию. https://www.postgresql.org/docs/11/collation.html

...