Что такое запрос what is a query
Query
Table of Contents
What Does Query Mean?
A query is a request for data or information from a database table or combination of tables. This data may be generated as results returned by Structured Query Language (SQL) or as pictorials, graphs or complex results, e.g., trend analyses from data-mining tools.
One of several different query languages may be used to perform a range of simple to complex database queries. SQL, the most well-known and widely-used query language, is familiar to most database administrators (DBAs).
Techopedia Explains Query
For a machine to understand a request for information in the first place, the query must be written according to a code known as query language. For example, if you go to a bank and ask “Can I have an espresso?” the teller might be puzzled.
SQL represents one of the standard languages used for database management purposes, while MySQL, instead, is the software using that specific language. Although SQL is a fairly universal query language, other commonly used ones include DMX, Datalog and AQL.
The query database feature is equal in necessity to data storage capability. Thus, a number of query languages have been developed for different database engines and purposes, but SQL is by far the most ubiquitous and well-known. In fact, rookie database administrators often are surprised when they learn about the existence of other query languages.
Query languages generate different data types according to function. For example, SQL returns data in neat rows and columns and is very similar to Microsoft Excel in appearance.
Other query languages generate data as graphs or other complex data manipulations, e.g., data mining, which is the deep analysis of information that uncovers previously-unknown trends and relationships between distinct or divergent data. For example, a SQL manufacturing company query may reveal that monthly sales peak in June and July, or that female sales representatives continually outperform male counterparts during holiday months.
A database can be queried by less experienced users who are not trained in a specific query language. Using a pre-defined query written in a special query language to make a request isn’t the only way to request information from a database.
A user might choose available parameters from a default menu that will guide him or her through the search. This is a simple but less flexible method. The system can also provide the user with a default record where a few blank areas can be filled with the fields and value defining the query. This method is called “query by example” (QBE).
What is a Query? Database Query Explained
In standard English, a query means a request for information. In computer programming, it refers to the same thing, except the information is retrieved from a database. In other words, a database query refers to a request for data from a database.
However, writing a query requires a set of pre-defined code to make the database understand the instruction. This concept is also known as the query language.
While the standard language for database management is Structured Query Language (SQL), other query languages to make database communication easy include AQL, Datalog, and DMX.
Note that SQL is different from MySQL – the former is the query language, while the latter is the software that uses the language.
To answer what a query is, this article will explain how it works. We will also include some examples of queries and cover the steps of writing them in the database.
How Does Query Work?
Let’s say that you want to order an Americano at a coffee shop. You make a request by saying, “Can I have an Americano?”. The barista will understand the meaning of your request and give you the ordered item.
A query works the same way – it adds meaning to the code, allowing the system to understand and execute actions accordingly. Be it SQL or any other query language, both the user and the database can exchange information as long as they use the same language.
Meanwhile, a well-designed database stores data in multiple tables. They consist of columns that hold the data’s attributes, along with rows or records of information. A query then helps retrieve data from different tables, arrange them, and display them according to the commands.
A query can either be a select, an action, or a combination of both. Select queries can retrieve information from data sources, and action queries work for data manipulation, for example, to add, change or delete data.
Advanced users can also use query commands to perform various programming tasks, from creating MySQL users and granting permissions to changing WordPress URLs in MySQL databases.
Below are some of the most common query commands along with their functions:
For more variations, combine some of the commands above. For example, pair the SELECT query with other commands like AND or SUM to aggregate data or combine results.
Besides using query language to request information from a database, other methods include:
In addition to databases, search engines can also query and retrieve information. However, the term query in these two technologies differs.
Web search query refers to keywords that users type in the search engine, while database query is a particular action to make a request for information.
Now that you understand the basic fundamentals of queries, let’s study several standard terms you might come across when querying a database:
Query Languages
As mentioned before, choosing the database and its language is crucial when working with queries. In addition to SQL, there is another type of database called NoSQL (Not Only Structured Query Language). The main difference between the two is the data structure.
SQL databases are relational and use predefined schemas that require you to specify your data structure. On the other hand, NoSQL databases are non-relational and have dynamic schemas for unstructured data.
Regardless, both SQL and NoSQL provide applicable options. An SQL database is a great choice for an ACID-compliant data structure. Conversely, if you have unstructured documents, key-values, or graphs, a NoSQL database might be an ideal choice.
Query Examples
Before we delve into the examples, below are the main benefits of using a query:
Now, let’s suppose you have collected some data from a survey. Below is a snippet of your data. Note that for this example, we will use an SQL database.
Data source: Participant (Table Name)
ID | Name | Sex | Age | Occupation |
1 | John | Male | 17 | Student |
2 | Peter | Male | 26 | Unemployed |
3 | Margareth | Female | 34 | Teacher |
4 | Lea | Female | 34 | Unemployed |
Selecting Only the “Name” and “Occupation” Columns From the “Participant” Table
This example shows you how to create a select query that only returns the value for Name and Occupation. The SQL statement should look something like this:
The statement above filters specific data from the table. It will generate the following result table:
Name | Occupation |
John | Student |
Peter | Unemployed |
Margareth | Teacher |
Lea | Unemployed |
To select other types of data from the table, change the variables accordingly.
Deleting Data From the Unemployed Respondents
The DELETE query works to remove existing records from particular tables. In this example, we are going to delete the Unemployed records using the following statement:
DELETE FROM Participant WHERE Occupation = ‘Unemployed’
Hit enter, and this will remove the respective records and return this output:
ID | Name | Sex | Age | Occupation |
1 | John | Male | 17 | Student |
3 | Margareth | Female | 34 | Teacher |
Inserting a New Row Containing a Participant Called Mario
In a broader scene, the INSERT INTO query inserts data into the MySQL database via MySQLi and PHP Data Object. However, this example will show how to use the query to add a new row to a database table.
There are two different ways to incorporate this SQL statement:
Changing Margareth’s Occupation to “Headmaster”
To modify existing records in a table, use the UPDATE query. Meanwhile, to specify which rows to update, use the WHERE query.
In this case, we’re going to edit Margareth’s occupation to Headmaster. Thus, the SQL statement will be:
The query runs to update row 3 into the specified value and shows the following output:
ID | Name | Sex | Age | Occupation |
1 | John | Male | 17 | Student |
2 | Peter | Male | 26 | Unemployed |
3 | Margareth | Female | 34 | Headmaster |
4 | Lea | Female | 34 | Unemployed |
Wrapping Up
A query can either be a select or action query – select queries pick parts of your data, while action queries manipulate retrieved data.
A query can also work with the combination of both actions to perform more varied tasks, for example, to review, insert, modify, or delete data, as well as calculate and combine data from multiple tables.
Database queries show that manipulating data doesn’t have to be complicated. Most query languages are intuitive and are easy to learn once you understand some basic rules. For those who don’t feel comfortable coding, you can use database plugins or Query by example as alternatives.
We hope this article has shed more light on database query and how it works. Don’t hesitate to leave a comment below if you are still experiencing problems with database queries.
Nabilla is a Digital Content Writer at Hostinger. She has a passion for website hosting and development and is keen to share her knowledge to help people further their online journey. When she’s not busy writing, she likes to explore nature and go on adventures.
Использование функции query в Гугл Таблицах
Данная шпаргалка создана на основе материалов:
Возможные сложности в работе
Синтаксис QUERY
Данные — диапазон ячеек, для которого нужно выполнить запрос.
Запрос — запрос на выполнение, записанный на языке запросов API визуализации Google (упрощенный вариант SQL-запросов).
Значение параметра запрос должно быть заключено в кавычки или представлять собой ссылку на ячейку, содержащую соответствующий текст.
Примеры запросов
На примере выше мы выбираем данные из указанного диапазона и в запросе указываем, что хотим получить все столбцы. «Limit» означает, что будет выведено всего 10 первых строк.
В данной формуле указывается диапазон, откуда берём данные. В запросе мы пишем, что хотим получить (под запросом имеется в виду то, что идёт в двойных кавычках). Если поочередно, то в запросе указывается следующее:
Если в последнюю формулу не добавить группировку, то вылетит ошибка.
В большинстве случаев подобные «подсказки» дают нам представление о том, что пошло не так и где это нужно исправить.
Выбираем данные с помощью кляузы SELECT
Для того, чтобы выбрать данные с которыми мы хотим работать — мы используем ключевое слово (кляузу) select.
По ссылке можно скопировать базу данных для тестов. Данные в базе вымышлены и все возможные совпадения случайны.
В первой части формулы мы выбираем диапазон с данными.
Во второй части мы в кавычках уже начинаем писать запрос. Все запросы начинаются с кляузы select.
Если в файле для тренировки вы напишите формулу, то будут выведен список всех РК.
В кляузе select мы перечисляем столбцы, которые нужно выбрать и сделать с ними что-то — либо вывести всё, либо отфильтровать, либо суммировать, либо разделить и т.д.
Таким образом выглядит часть данных, которые находятся в файле для тестов.
Если мы применим запрос, который указан выше, то будут выведены все значения из столбца B.
Фильтруем данные с помощью WHERE
С помощью where можно фильтровать данные, которые содержит определенный столбец.
В данном случае, с помощью where мы фильтруем кампании, которые содержат «YRSY» или «YSEA».
Кляуза WHERE поддерживает логические операторы OR и AND и определенные ключевые слова с помощью которых можно фильтроваться.
Оператор | Описание |
---|---|
= | Равно |
Больше | |
!= | Не равно |
AND | Логическое «И». Т.е. все условия через И должны быть соблюдены. |
OR | Логическое «ИЛИ». Должно быть выполнено одно из условий. |
NOT | Логическое отрицание. Например, «not contains» в where будет означать «не содержит» |
contains | Проверяет содержание определённых символов в строке. Например, WHERE A contains ‘John’ вернёт в фильтр все значения из столбца A, в которых встречается John, например, John Adams, Long John Silver. |
starts with | Фильтрует значения по префиксу, то есть проверяет символы в начале строки. Например, starts with ‘en’ вернёт значения engineering и english. |
ends with | Фильтрует значения по окончанию строки. Например, строка ‘cowboy’ будет возвращена конструкцией «ends with ‘boy’» или «ends with ‘y’» |
matches | Соответствует регулярному выражению. Например: where matches ‘.*ia’ вернёт значения India и Nigeria. |
like | Упрощённая версия регулярных выражений, проверяет соответствия строки заданному выражению с использованиям символов подстановки. На данный момент like поддерживает два символа подстановки: «%» означает любое количество любых символов в строке, и «_» — означает один любой символ. Например, «where name like ‘fre%’» будет соответствовать строкам ‘fre’, ‘fred’, и ‘freddy’. |
Сортируем с помощью ORDER BY
Для того, чтобы отсортировать данные по убыванию или возрастанию, то нужно добавить кляузу order by.
По умолчанию — порядок asc, то есть по возрастанию. Если укажете после названия поля параметр desc, запрос вернет результат в порядке убывания указанных в кляузе Order by полей.
Вот так мы выводим 5 самых конверсионных кампаний за весь период:
Результат выглядит вот так:
Агрегирующие функции, группировка данных и переименование столбцов (Group by, Label)
Агрегирующие функции
В примерах выше очень часто используется функция sum(), которая отвечает за суммирование данных из указанного столбца.
Помимо суммирования можно возвращать минимальное и максимальное значение, среднее значение или подсчитать количество значений в группе.
Функция | Описание | Поддерживаемый тип данных | Возвращаемый тип данных |
---|---|---|---|
avg() | Возвращает среднее значение для группы | Числовой | Числовой |
count() | Возвращает количество значений в группе | Любой | Числовой |
max() | Возвращает максимальное значение для группы | Любой | Аналогичный полю, к которому применяется |
min() | Возвращает минимальное значение для группы | Любой | Аналогичный полю, к которому применяется |
sum() | Возвращает сумму значений в группе | Числовой | Числовой |
Группировка данных с помощью GROUP BY
В случаях, когда используются агрегирующие функции, то указание group by обязательно. Иначе гугл выдаст ошибку.
Обычно в ошибке указывается, что пошло не так. Если добавим группировку по кампаниям, то всё будет ок.
Переименование заголовков с помощью LABEL
Предположим, в таблице нам нужно вывести данные по всем кампаниям, показам, кликам, CTR, расходам, конверсиям, посчитать CPA и вывести с сортировкой CPA по убыванию.
Мы это можем сделать с помощью следующей формулы:
В перечислении в кляузе select мы показываем какие столбцы хотим видеть. Здесь можно использовать, в том числе и арифметические операторы.
Оператор | Описание |
---|---|
+ | Сложение |
— | Вычетание |
/ | Деление |
* | Умножение |
В результате работы формулы мы получим следующий результат (количество данных на скрине сократил, чтобы лучше было видно).
В случае со столбцом B, query взял в качестве заголовка 1 строку из нашей базы данных, где было указано «Название размещения». По остальным столбцам в заголовках добавилось указание первой строки из БД + название арифметической операции, которая использовалась для данного столбца.
Для того, чтобы это исправить и сделать более красиво, используется кляуза label.
Вот как выглядит формула с использованием этой кляузы:
После слова label мы начинаем перечислять столбцы, которые указывали в «селекте» и задавать им значения, которые нам нужны.
Подобные перечисления разделяются между собой запятой. Если запятую пропустим, то query вернет ошибку.
Вот так теперь выглядят заголовки таблицы после использования label:
Форматирование с помощью кляузы Format
Форматировать данные можно с помощью двух способов:
На примере ниже видно, что в столбце, где мы рассчитали CTR, нужно данные форматировать в проценты:
И делаем мы это либо с помощью волшебной кнопки.
Либо меняем формулу из предыдущего примера на следующую:
В формуле появилась кляуза, которая приводит CTR в нужный нам вид:
Аналогичные операции можно сделать и для других столбцов.
И итоговая формула будет выглядеть у нас следующим образом:
Теперь выглядит всё еще лучше:
Единственное, что раздражает — если происходит ошибка деления на ноль (в случае с CPA), то остаются пустые ячейки.
Форматирование даты
Предположим, что мы хотим создать таблицу, где по дням недели будут суммироваться конверсии.
Сделать мы это можем с помощью следующей формулы:
В итоге, получаем простую таблицу, где складываются все конверсии.
Неделя в данном случае начинается с воскресенья. Соответственно, у воскресенья порядковый номер = 1, а у субботы = 7.
Чтобы не запутать себя и окружающих, будет лучше отформатировать дни недели и привести их в привычный вид. Для этого в формулу нужно добавить кляузу format.
Теперь таблица выглядит понятнее:
В эту формулу был добавлен фильтр, который проверяет ячейки, где вместо кампании пустая строка.
Помимо функции dayofweek(), существуют и другие, которые мы можем применять в наших запросах.
Скалярные функции
Перекрестные таблицы (PIVOT)
Чуть больше информации об этой кляузе есть в статье от netpeak, здесь приведу пример того, как мы можем использовать эту кляузу.
Задача:
Нужно по кампаниям построить таблицу, где по дням будет видна динамика конверсий, чтобы вовремя отслеживать проблемы.
Сделаем мы это с помощью следующего запроса:
В итоге, получается матрица, которую можно использовать для анализа:
QUERY. Функция для создания запросов в Google-Таблицах
Спасибо Евгению Намоконову за помощь в подготовке материала.
Функция QUERY позволяет сделать выборку нужных строк из таблицы с помощью SQL-запроса и отсортировать их.
=QUERY(данные; запрос; [заголовки])
Итак, правила формирования запросов:
Рассмотрим несколько примеров применения QUERY на практике.
Простой пример: выбираем книги определенной тематики из таблицы
Из простой исходной таблицы будем формировать список книг по тематике:
При этом тематику будем выбирать из выпадающего списка на отдельном листе:
Функция QUERY для решения этой задачи будет выглядеть следующим образом:
Мы извлекаем данные из столбцов A и C в диапазоне ‘Книги’!A1:C. Фильтруем данные по столбцу B (тематике) этого диапазона по выбранному критерию из выпадающего списка в ячейке A1. Сортируем по убыванию по столбцу C исходного диапазона и добавляем к нашей выборке заголовки (последний аргумент функции QUERY = 1).
Группируем данные с помощью GROUP BY и PIVOT
Сгруппировать данные, используя QUERY, можно с помощью двух ключевых слов: GROUP BY и PIVOT, ниже рассмотрим примеры с ними.
Таблица, с которой мы будем работать:
Задачей будет вывести сумму продаж по каждой тематике, то есть сгруппировать данные по столбцу B.
Начнем с GROUP BY, текст функции будет таким:
=QUERY(‘Книги‘!A1:C6;»select B, sum(C) group by B»)
Обратите внимание: чтобы функция работала, помимо группировки (group by B) нужна хотя бы одна аггрегирующая функция, в нашем случае это sum(C). Напишу, на всякий случай, все аггрегирующие функции для QUERY: sum(), max(), min(), avg() и count().
Результат нашей формулы:
С помощью GROUP BY возможна группировка и по нескольким столбцам, для этого просто перечислите их, как в функции ниже и не забудьте добавить эти столбцы в SELECT:
Группировка с помощью PIVOT.
Обратите внимание, что здесь в SELECT не нужно писать столбец B, по которому данные будут сгруппированы.
Пока отличие в том, что сгрупированные элементы расположены по столбцам, а не по строкам, как в GROUP BY.
Добавим еще один столбец для группировки.
Строим сводную таблицу со средними/максимальными значениями по тематикам
В этом примере мы построим небольшую сводную таблицу, где будут отображены средние значения по тематикам за два года:
Мы используем похожий диапазон (в отличие от предыдущего в нем есть продажи за 2015 и 2016 годы), извлекаем средние значения по столбцам C и D (SELECT avg(C), avg(D)) и группируем их по столбцу B (тематика).
Полученный результат транспонируем для удобного отображения (с помощью функции TRANSPOSE (ТРАНСП)):
Можно использовать и другие функции вместо avg (среднего), например max (максимальные значения):
Или отобразить и среднее, и максимум, но только по столбцу D:
Кейс «Считаем средний чек, выбирая данные с определенной даты»
На скриншоте массив данных, с которым мы будем работать:
Наша задача: отобрать строки с продажами начиная с 1 апреля и посчитать по ним средний чек, используя количество клиентов, то есть получить среднее взвешенное.
Начнем. Создадим QUERY с умножением количества клиентов (столбец B) на средний чек (столбец С) начиная с определенной даты:
Правильно использовать дату в формуле QUERY так:
Вернемся к тому, что у нас получилось. Наша формула выдала вот такой массив данных:
Это построчные произведения количества клиентов на средний чек. Нам нужно просуммировать их, для этого введем перед формулой СУММ (SUM):
Чтобы получить средний чек, получившееся число нужно разделить на общую сумму клиентов в отобранных строках. Чтобы закрепить использование QUERY, опять воспользуемся этой формулой.
Берем предыдущую формулу, меняем B*C на sum(B) и получаем такую конструкцию:
Наконец, совмещаем формулы:
Все работает, ура! 53 (этот результат видно на всплывающей подсказке в верхнем левом углу) — средний чек с учетом количества клиентов, рассчитанный через среднее взвешенное.
Кейс «QUERY и выпадающий список»
Возьмем табличку с продажами книг. На ее основе будем делать отчет с выпадающим списком, в котором будут все тематики, и формулой QUERY, выводящей книги выбранной тематики и сортирующей их по продажам.
Итак, выпадающий список. Вначале создадим новый лист (допустим, наша исходная таблица огромна, и всю аналитику мы хотим производить на другом листе). Кликаем правой кнопкой мыши на ячейку А1, выбираем Проверка данных.
В Правилах выбираем Значение из списка, перечисляем все наши тематики через запятую и нажимаем Сохранить:
Список получился вот таким:
В соседнюю ячейку А2 впишем следующую формулу:
И разберем ее по частям:
Изменив тематику в ячейке А1 на философию, мы получим книги только по философии, отсортированные по продажам. Удобно.
Если бы в нашей исходной таблице была дата, мы могли бы добавить ее в условие QUERY и выводить данные за выбранный день, месяц, неделю — таким образом можно получить готовый отчет по продажам, который не нужно каждый раз заново собирать.
Query по нескольким диапазонам данных
В качестве первого аргумента функции QUERY можно указать массив, состоящий из нескольких диапазонов данных. Главное, чтобы эти диапазоны были таблицами с одинаковой структурой.
Диапазоны указываются через точку с запятой в фигурных скобках:
Спасибо Евгению Намоконову за помощь в подготовке кейсов для этой статьи. Мы с Евгением ведем канал в Телеграме по Google Таблицам.
Регулярно публикуем новые кейсы и советы. Заглядывайте в гости: