В прошлых постах публиковал о тех СУБД(MySql в частности), которые использую в своей практике и тут-же подвернулся интересный пример, который показывает 'МОЩЬ' языка программирования Sql.
Похожий запрос в практике встречается в 99% случаях.
Цель:
Сделать запрос, который укажет кол-во звонков с определенных площадок.
Дано:
Две разных таблицы в одной Б.Д.
1. ads_phones (первая таблица)
2. ads_calls (вторая таблица)
Решение:
Интересные моменты, на которые стоит обратить внимание.
а) Запрос формирует одну общую таблицу из двух(нескольких), где оператор ON - условие для сравнения(т.е. "номера телефонов" в табл. должны совпадать).
б) Запрос делает выборку данных, за прошлый месяц.
в) Запрос делает группировку данных согласно минимальному кол-ву, которые нам интересны(т.е. > 1).
Рекомендую сохранить пример этого запроса т.к. "Узнавать Кол-во" чего либо, приходиться очень часто.
#Sql, #MySql
Похожий запрос в практике встречается в 99% случаях.
Цель:
Сделать запрос, который укажет кол-во звонков с определенных площадок.
Дано:
Две разных таблицы в одной Б.Д.
1. ads_phones (первая таблица)
2. ads_calls (вторая таблица)
Решение:
SELECT ads_phones.note, ads_phones.phone, COUNT(ads_calls.call_to) AS count_call FROM ads_phones INNER JOIN ads_calls ON ads_calls.call_to = ads_phones.phone AND MONTH(ads_calls.created) = MONTH(NOW() - INTERVAL 1 MONTH) GROUP BY ads_calls.call_to HAVING COUNT(ads_calls.call_to) > 1 ORDER BY count_call DESC
Интересные моменты, на которые стоит обратить внимание.
а) Запрос формирует одну общую таблицу из двух(нескольких), где оператор ON - условие для сравнения(т.е. "номера телефонов" в табл. должны совпадать).
INNER JOIN ads_calls ON ads_calls.call_to = ads_phones.phone
б) Запрос делает выборку данных, за прошлый месяц.
MONTH(ads_calls.created) = MONTH(NOW() - INTERVAL 1 MONTH)
в) Запрос делает группировку данных согласно минимальному кол-ву, которые нам интересны(т.е. > 1).
GROUP BY ads_calls.call_to HAVING COUNT(ads_calls.call_to) > 1
Рекомендую сохранить пример этого запроса т.к. "Узнавать Кол-во" чего либо, приходиться очень часто.
#Sql, #MySql
4. Запрос и результат:
Получили название товаров и артикулов, где sku(из 1-ой табл.) = sku2(из 2-ой табл.).
Внимание(важная часть запроса, без которой он просто бесполезен):
#Sql, #MySql
SELECT olx_sales_week_by_wh.sku,products.articul,products.name
FROM olx_sales_week_by_wh
LEFT JOIN products ON olx_sales_week_by_wh.sku = products.sku2
WHERE olx_sales_week_by_wh.name ='Львов'
AND products.category = 'кдх2б' GROUP BY olx_sales_week_by_wh.sku
Получили название товаров и артикулов, где sku(из 1-ой табл.) = sku2(из 2-ой табл.).
Внимание(важная часть запроса, без которой он просто бесполезен):
LEFT JOIN products ON olx_sales_week_by_wh.sku = products.sku2
#Sql, #MySql
SELECT date, ROUND(sum(spend),2) spend
FROM `reklama` WHERE category = 'одеяла' AND (MONTH(date) = MONTH(CURRENT_DATE()) OR MONTH(date) = MONTH(CURRENT_DATE() - INTERVAL 1 MONTH))
GROUP BY date
ORDER BY date ASC
В этом запросе играет ключевую роль, функция
MONTH()
- предназначена для того, чтобы извлекать месяц из даты, как раз то, что нам необходимо. И конечно, помним о том, чтобы увидеть все даты, необходимо сделать группировку
GROUP BY date,
без этой функции просто будет показана одна дата(одна строка).#Sql, #MySql
3. Вопрос. Как получить правильный адрес хоста, чтобы подключиться к Б.Д.?
а). Запускаем "cmd"
б). Вбиваем:
где: sqllocaldb - база
s - старт сервера(обязательно)
в). Вбиваем:
выводятся ряд строк, но необходима только одна:
Вот это и есть адрес хоста, к которому необходимо подключиться.
#Sql, #MySql
а). Запускаем "cmd"
б). Вбиваем:
sqllocaldb s
где: sqllocaldb - база
s - старт сервера(обязательно)
в). Вбиваем:
sqllocaldb i MSSQLLocalDB
выводятся ряд строк, но необходима только одна:
Имя канала экземпляра: np:\\.\pipe\LOCALDB#F8B4165B\tsql\query
Вот это и есть адрес хоста, к которому необходимо подключиться.
#Sql, #MySql