Ответы пользователя по тегу PostgreSQL
  • Postgresql group by

    @ztxn
    выбрать category_id того заказа, у которого min(«order».created)

    select customer_id, created, category_id 
    from 
      (select customer_id, date_trunc('day', «order».created) as created, category_id 
              ,row_number() over (partition by customer_id order by date_trunc('day', «order».created)) rn
       from «order»)s
    where rn = 1
    Ответ написан
    Комментировать
  • Postgres, foreign key to parent(in inheritance mean) table:imposible?

    @ztxn
    Спасибо за этот вопрос. Не знал об этой плюшке PG.

    Печально, что caveats сужают область ее применения до ничтожно узкой.
    Ответ написан
    Комментировать
  • Выборка из базы данных (строки)

    @ztxn
    1) состоящих более из 7 слов

    Без регекспов:
    Если разделители пробелы, количество слов = length(str)-length(replace(str,' ','')) + 1
    Убрать дублирующиеся пробелы можно как-то так: replace(replace(replace(str,' ','~ '),' ~',''),'~','')

    select *
    from (select str,replace(replace(replace(str,' ','~ '),' ~',''),'~','') sstr from t) s
    where length(sstr)-length(replace(sstr,' ','')) +1 > 7

    Регекспами:
    select * from t where ' '||str ~ '(\s+\S+){8,}'

    2) содержащих только символы от 'a' до 'z', от 'а' до 'я', цифры и знак '-'

    select * from t where str ~ '^[-\w\dа-я]+$'
    Ответ написан
    Комментировать
  • На что мигрировать с MS SQL? MySQL или PostgreSql?

    @ztxn
    Пг — версионник, у него запись не блокирует чтение, MS — блокировочник. Изоляция транзакций реализована совершенно по разному.

    Простой пример:
    ms, выполняя запрос insert into table (value) select max(value) +1 from table, в read commited не допустит дублирования значений при вставке несколькими сессиями, а в PG — запросто.

    В этом контексте на MySQL может оказаться переехать куда проще. Он тоже блокировочник.
    Ответ написан
    1 комментарий