Коллеги, добрый день! В этом видео мы продолжим знакомиться с запросами QUERY и кляузами, входящими в них. Ранее мы обсудили ключевые слова Select для отбора столбцов из исходной базы данных, Where для задания условий и Order by для сортировки данных. В этом видео рассмотрим еще две кляузы — Limit и Offset, позволяющие ограничивать количество строк выдачи и задавать отступ от начала диапазона. С помощью них можно, например, построить топ-10 ваших продуктов, сделок, магазинов, сотрудников по тому или иному KPI и любой другой топ или найти b вывести значения, занимающие места с 70 по 80 в этом топе. Мы будем работать с нашим реестром сделок, продолжим с ним работать и начнем с тривиального примера. Мы выгрузим все столбцы из реестра сделок без всяких условий, то есть "SELECT *", и попробуем добавлять Limit, добавлять разные варианты. Итак, создадим новый лист "limit" и сформируем функцию QUERY. Мы обращаемся к нашей таблице и указываем "SELECT *", то есть выводим все столбцы. И теперь давайте напишем Limit, например, три. Итак, заголовки у нас определились автоматически и были выведены первые три строки. Если посмотреть на нашу исходную таблицу, то можно увидеть, что это первые три сделки, как они идут, собственно говоря, по порядку в нашей таблице. Но, как правило, конечно, нас интересует не это, а нас интересует Limit в сочетании с какой-либо сортировкой. Например, мы можем отсортировать данные по убыванию суммы сделки в столбце Н или по факту оплаты, что даже интересней по закрытым сделкам, по столбцу К по убыванию и поставить "LIMIT 3". И вот эта функция QUERY выведет топ-3 сделок. И здесь я обращу ваше внимание на ключевое свойство кляузы Limit: эта функция ограничивает не исходную базу данных, а именно строки итоговой выборки, то есть функция сначала будет фильтровать, если есть Where, сортировать, как в нашем примере, если Order by, а потом уже из полученной выборки отсортированной отберет то количество строк, которое указано после кляузы Limit. В нашем примере "LIMIT 3" мы можем поменять, поставить "LIMIT 5" и так далее. Конечно, количество строк можно брать и из ячейки, то есть сделать какую-то ячейку, подписать перед ней "топ" и указывать в ней число, например, семь или 10, а в запросе удалить число тогда, и к запросу справа, как мы умеем, с помощью амперсанда присоединить число из ячейки, вот таким образом. Теперь не нужно залезать в саму функцию QUERY, достаточно поменять число в ячейке, и топ продаж пересчитается автоматически. Перейдем теперь к кляузе Offset. По моему мнению, по моему опыту, она используется гораздо реже, на порядки, чем лимит и тем более чем остальные кляузы QUERY, но все же полезно о ней знать. Например, у меня был случай, когда товары по определенному критерию нужно было отобрать и разместить в три колонки высотой не более 10, потому что таблица не позволяла вывести список из 30 разом. Мне как раз помогли три функции QUERY, у каждой был лимит 10 строк, а отступ Offset менялся ноль, 10 и 20. То есть я брал первые 10 строк из выборки, потом с 11 по 20, с 21 по 30, таким образом получились три отдельных столбца, как требовалось в моей задаче. Давайте посмотрим на работу этой кляузы на практике. Уберем одну самую крупную сделку из нашего топа, который формируется с помощью Limit и числа из ячейки, просто добавим к запросу справа пробел и слово Offset. Именно такой порядок: Limit, затем Offset. Выглядит Offset так же: "OFFSET пробел число" (то число, которое вы пропускаете, отступаете). Так, видите, ошибка. Потому что я нечаянно удалил единичку из ссылки на ячейку с числом, которое определяет топ. Мы можем также и число для Offset тоже брать из ячейки, то есть напишем "пропустить". У нас будет две таких ячейки, в которых мы указываем, сколько сделок пропустить и какой топ вывести. Например, мы хотим две самых крупных убрать. Будем брать это число для Offset, тоже присоединять его амперсандом из ячейки Е1. Итак, что делает эта функция QUERY? Она выводит все столбцы ("SELECT *") из листа сделки, сортирует по убыванию суммы сделки в столбце К, затем ограничивает полученную выборку только десятью строками, а вернее, тем количеством, которое указано в ячейке С1 (число после слова "LIMIT" берется оттуда) и, наконец, убирает то количество строк, которое указано в ячейке Е1 с помощью кляузы Offset. Итак, коллеги, мы с вами познакомились с кляузами Limit и Offset. С их помощью можно выводить заданное количество строк в выдаче функции QUERY и выводить их с заданной позиции, то есть пропускать первые N строк. Отмечу, что эти кляузы используются в реальных задачах гораздо реже, чем все остальные, но тоже нужны для некоторых задач, поэтому, конечно, стоит иметь их в своем арсенале и знать про них.