• Сервис онлайн-записи на собственном Telegram-боте
    Тот, кто работает в сфере услуг, знает — без ведения записи клиентов никуда. Мало того, что нужно видеть свое расписание, но и напоминать клиентам о визитах тоже. Нашли самый бюджетный и оптимальный вариант: сервис VisitTime.
    Для новых пользователей первый месяц бесплатно.
    Чат-бот для мастеров и специалистов, который упрощает ведение записей:
    Сам записывает клиентов и напоминает им о визите;
    Персонализирует скидки, чаевые, кэшбэк и предоплаты;
    Увеличивает доходимость и помогает больше зарабатывать;
    Начать пользоваться сервисом


  • Иллюстрированный самоучитель по PostgreSQL

    Выбор интервалов записей

    В PostgreSQL количество записей, выбираемых запросом SQL, не ограничивается. Обработка запроса, возвращающего несколько миллионов записей, займет много времени, но сервер не остановится, пока не вернет весь итоговый набор (или процесс не будет прерван извне).

    Вероятно, выделение некоторой части выборки легко реализуется на программном уровне, но в SQL предусмотрены ключевые слова LIMIT и OFFSET, упрощающие выборку заданной части итогового набора.

    Секция LIMIT ограничивает максимальное количество записей в итоговом наборе (хотя размер итогового набора вполне может быть меньше заданной величины). При наличии секции OFFSET в итоговом наборе пропускается количество записей, заданное параметром секции. Если заданы оба ключевых слова, то отсчет ограничения, указанного в секции LIMIT, начинается после пропуска записей в соответствии с секцией OFFSET.

    Как показано в листинге 4.45, первый запрос, содержащий простую секцию LIMIT, ограничивается выборкой первых пяти записей из результатов объединения таблиц editions и books. Обычно это объединение содержит 17 записей.

    Листинг 4.45. Использование секций LIMIT и OFFSET.

    booktown=# SELECT isbn, title, publication
    booktown-# FROM editions NATURAL JOIN books AS b (book_id)
    booktown-# ORDER BY publication DESC
    booktown-# LIMIT 5;
    isbn | title | publication
    0596000855 | Programming Python | 2001-03-01
    0451457994 | 2001: A Space Odyssey | 2000-09-12
    0451198492 | 2001: A Space Odyssey | 1999-10-01
    044100590X | Dune | 1999-10-01
    0929605942 | The Tell-Tale Heart | 1998-12-01
    (5 rows)
    
    booktown=# SELECT isbn, title, publication
    booktown-# FROM editions NATURAL JOIN books AS b (book_id)
    booktown-# ORDER BY publication DESC
    booktown-# LIMIT 5
    booktown-# OFFSET 2;
    isbn | title | publication
    0451198492 | 2001: A Space Odyssey | 1999-10-01
    044100590X | Dune | 1999-10-01
    0929605942 | The Tell-Tale Heart | 1998-12-01
    0441172717 | Dune | 1998-09-01
    1885418035 | The Tell-Tale Heart | 1995-03-28
    (5 rows)
    

    Второй запрос в листинге 4.45 содержит секцию OFFSET, вследствие чего начало отсчета смещается на две записи вниз. Последние три записи в итоговом наборе первого запроса совпадают с первыми тремя записями итогового набора второго запроса. Секция ORDER BY обеспечивает единый порядок следования записей в итоговых наборах обоих запросов.

    Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.