Похожие презентации:
SQL (3)
1.
SQL(это не сложно)
2.
Несколько базовых советовУчимся красиво оформлять запросы с самого начала. Потом сами себе
спасибо скажете :)
3.
Несколько базовых советовОсобенно когда начнутся такие запросы
4.
Несколько базовых советовПравильно сокращаем названия таблиц, например:
responses - r
app_install_sources - ais
response_clinic - rc
Это поможет вам легко находить в запросе нужные данные и не
путаться в коротких названиях таблиц, если нужно получить результат
сразу из нескольких
Если вам не нужны конкретные столбцы из таблицы, а вы хотите
посмотреть все, то ставим *
5.
Несколько базовых советовЕсли вам нужно дать название новому столбцу, в который вы хотите
выводить данные, то его название не должно содержать пробелов,
вместо пробела используем “_”, также перед названием ставим
оператор AS
Тут мы говорим: “Суммируй все баллы и выведи эту сумму в
результирующей таблице, назови этот столбец как ‘total_points’
6.
Несколько базовых советовНе стесняйтесь мучить Chat GPT (на самом деле он вам и готовый запрос
напишет, если захотите, но основы все равно лучше знать самому).
7.
Несколько базовых советовПеред тем, как писать запрос - проверьте в каких таблицах и в каком
формате лежат ваши данные. Это необходимо для проставления
корректных операторов.
Проверьте, есть ли у вас доступ на чтение всех нужных для запроса
таблиц, в противном случае запрос не выполнится.
А нужен ли вам на самом деле запрос? Или достаточно строки в
консоли? Запрос имеет смысл писать, если нужно вывести данные из
нескольких таблиц или с более чем одним условием.
8.
Несколько базовых советовЕсли хочется погрузиться в теорию и подробнее про все почитать:
https://shultais.education/blog/sql-for-beginners
https://www.schoolsw3.com/sql/index.php
9.
Пишем первые запросыПеречисляем список столбцов с данными, которые нам нужно вывести
SELECT
Из какой таблицы нужно вывести данные
FROM
Какому условию должны соответствовать эти данные
WHERE
По какому условию нужно сгруппировать данные
GROUP BY
Если нужно вывести данные, соответствующие определенному шаблону
LIKE
Если нужно вывести данные, соответствующие определенному промежутку (min,max или дата)
BETWEEN
LEFT JOIN,
Аналог ВПР в Excel - если нужно вывести данные после сопоставления двух и более таблиц
10.
Пишем первые запросыВывести в результате пустые значения
IS NULL
Выводить только данные, где нет пустых значений
IS NOT NULL
Сложить все числа в определенном диапазоне
SUM
11.
Давайте попробуем поэтапно написать запрос под такую задачу (азаодно посмотрим, как что работает):
Нужно вывести список опубликованных отзывов, полученных после
записи с 1 по 5 июля, с оценкой “4” и “5”, и чтобы они были только на
клинику без врача, и название клиники чтобы было. А еще чтобы среди
этих клиник были только моно-клиники.
12.
Сначала мы определимся, с какими таблицами работаем, чтобысоставить запрос. Иногда приходится тыкаться по таблицам и искать откуда брать тот или иной параметр.
Итак, здесь нам потребуются таблицы responses, clinics,
response_clinic и clinic_computed_infos
13.
Таблиц будет много, так чтосразу присваиваем короткие
названия
Таблиц несколько, но основная, из которой мы будем тянуть данные, и к
которой будем присоединять другие таблицы - responses. С нее и
начнем
14.
Указываем короткое названиетаблицы, чтобы было понятно,
откуда брать это условие
Cписок опубликованных отзывов, после
записи, с 1 по 5 июля, с оценкой “4” и “5”,
на клинику без врача, название клиники.
Только моно-клиники.
Нам нужно получить данные с 1
по 5 включительно, поэтому
ставим по 6. Если поставить по 5,
в выводе будут данные с 1 по 4
15.
Каждое новое условие простоперечисляем через AND
Cписок опубликованных отзывов, после
записи, с 1 по 5 июля, с оценкой “4” и “5”,
на клинику без врача, название клиники.
Только моно-клиники.
В зависимости от типа данных
оформляем, данные бывают
типов: числа, текст, значение.
Если нужно полное совпадение,
ставим знак =
16.
Когда AND становится слишкоммного, удобнее их переносить на
отдельную строку - так их легче
найти и считать
Cписок опубликованных отзывов, после
записи, с 1 по 5 июля, с оценкой “4” и “5”,
на клинику без врача, название клиники.
Только моно-клиники.
17.
Если в условии более 1 параметра, используемоператор IN, он включит все строки, содержащие
нужные параметры. Оформляем скобками,
параметры через запятую
Cписок опубликованных отзывов, после
записи, с 1 по 5 июля, с оценкой “4” и “5”,
на клинику без врача, название клиники.
Только моно-клиники.
18.
Если нужно получить данныеболее чем из 1 таблицы,
используем JOIN.
Cписок опубликованных отзывов, после
записи, с 1 по 5 июля, с оценкой “4” и “5”,
на клинику без врача, название клиники.
Только моно-клиники.
Чтобы приджоинить таблицу,
нужно найти столбец, который
есть общий в обеих таблицах и
указать его.
Иногда бывает, что общего столбца в
обеих таблицах нет. В таком случае ищем
третью таблицу, в которой есть общий
столбец с той, которую нужно
присоединить и той, к которой нужно
присоединить. Джоиним сначала ее, а
потом через нее уже нужную таблицу.
19.
Важно! WHERE всегда должно быть в самомконце запроса, в противном случае это будет
нарушение синтаксиса и запрос не выполнится
Cписок опубликованных отзывов, после
записи, с 1 по 5 июля, с оценкой “4” и “5”,
на клинику без врача, название клиники.
Только моно-клиники.
Если нам нужно вывести только строки, где в
определенном столбце не должно быть данных,
используем IS NULL
20.
Cписок опубликованных отзывов, послезаписи, с 1 по 5 июля, с оценкой “4” и “5”,
на клинику без врача, название клиники.
Только моно-клиники.
21.
Бонус для самых усидчивыхО, а давайте мы еще к этому запросу добавим инфу по юзерам. Но только
чтобы там были юзеры, которые оставили более двух отзывов за все
время. И чтобы кол-во оставленных отзывов выводилось тоже.
Первоначальный запрос существенно осложнился, но это не проблема!
Важно помнить, что JOIN и WHERE - хорошо, но это не панацея. Сложные
запросы требуют отчаянных мер и тогда в игру вступают подзапросы
22.
Юзеры, которые оставили более двухотзывов за все время + кол-во отзывов
3
1
2
Посмотри, сколько отзывов (строк) есть в responses по каждому юзеру
1. Считать (группировать) будем по created_by
2. Условие - на 1 юзера более 2 отзывов
3. Выведи счетчик отзывов (строк) по каждому юзеру и назови этот столбец в
таблице count_responses
23.
Наш запрос вывел такой результат. Но как бы нам теперь эту инфуприделать к предыдущему запросу?
24.
Мы приджоинили результат нашего второго запроса к первому.Весь запрос целиком обязательно берем в скобки.
Обязательно даем короткое название с помощью AS, так как теперь
результат этого запроса - тоже в своем роде таблица с данными.
Находим, что у нее общего с нашей основной таблицей (тут created_by) и
по нему джоиним.
25.
ВАЖНО!В SELECT таблицы 2 указать
столбцы, по которым вы сможете
приджоинить таблицу 2 к таблице
1. Даже если лично вам они не
нужны.
Вы можете джоинить столько таблиц к основной, сколько вам нужно, это поможет в
случаях, когда надо провести сложную аналитику, состоящую из многих параметров.
Потратив однажды время на написание такого запроса, вы сэкономите кучу времени
на сопоставлении этого всего вручную - особенно касается регулярных запросов.
26.
Нет большей радости длястарого учителя, чем SQLзапрос, написанный его учеником