Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: Базы данных MySQL

  Все выпуски  

RFpro.ru: Базы данных MySQL


РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты в разделе

Megaloman
Статус: Мастер-Эксперт
Рейтинг: 159
∙ повысить рейтинг »
solowey
Статус: Профессионал
Рейтинг: 93
∙ повысить рейтинг »
Alexander Babich
Статус: Профессор
Рейтинг: 1
∙ повысить рейтинг »

∙ Базы данных

Номер выпуска:549
Дата выхода:11.11.2020, 15:45
Администратор рассылки:Коцюрбенко Алексей Владимирович (Старший модератор)
Подписчиков / экспертов:21 / 17
Вопросов / ответов:1 / 1

Консультация # 199537: Здравствуйте, уважаемые эксперты! Помогите, пожалуйста, написать 3 запроса в SQL. Есть таблица pizza, содержащая id, наименование (name) и цену пиццы (price) Есть таблица client, содержащая id и имя клиента (name) Есть таблица orders, содержащая id_order заказа, дату заказа (dat_order) и внешний ключ id_client (ссылка на кл...

Консультация # 199537:

Здравствуйте, уважаемые эксперты! Помогите, пожалуйста, написать 3 запроса в SQL.


Есть таблица pizza, содержащая id, наименование (name) и цену пиццы (price)

Есть таблица client, содержащая id и имя клиента (name)

Есть таблица orders, содержащая id_order заказа, дату заказа (dat_order) и внешний ключ id_client (ссылка на клиента)

И есть таблица order_content, содержащая внешние ключи id_order (ссылка на заказ) и id_pizza (ссылка на пиццу) и количество этой пиццы в заказе (quantity)


1) Посчитать общую сумму заказов за 2014 год.

2) Найти всех постоянных клиентов (тех, кто совершил больше одного заказа, и между заказами прошло не больше 30 дней, и последний заказ был совершён не более 30 дней назад).

3) Вывести стоимость среднего заказа в выходные.

Дата отправки: 06.11.2020, 15:32
Вопрос задал: Анна (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Коцюрбенко Алексей Владимирович (Старший модератор):

Здравствуйте, Анна!

1) Посчитать общую сумму заказов за 2014 год

Код (SQL) :: выделить код
SELECT SUM(quantity*price) FROM (order_content JOIN orders USING(id_order)) JOIN pizza ON (id_pizza=pizza.id) WHERE YEAR(dat_order)=2014


2) Найти всех постоянных клиентов
Код (SQL) :: выделить код
SELECT id_client, name, count, max_interval FROM (SELECT id_client, COUNT(id_client) AS count, MAX(DATEDIFF(IFNULL((SELECT dat_order FROM orders WHERE id_order>o.id_order AND id_client=o.id_client ORDER BY dat_order LIMIT 1), CURDATE())), dat_order) AS max_interval FROM orders AS o GROUP BY id_client ORDER 
 BY dat_order) JOIN client ON (id_client=client.id) WHERE count>1 AND max_interval<=30

За работоспособность не ручаюсь - проверял только на SQLite

3) Вывести стоимость среднего заказа в выходные
Код (SQL) :: выделить код
SELECT AVG(cost) FROM(SELECT SUM(quantity*price) AS cost FROM (order_content JOIN orders USING(id_order)) JOIN pizza ON (id_pizza=pizza.id) WHERE DAYOFWEEK(dat_order) IN (1, 7) GROUP BY id_order)

Консультировал: Коцюрбенко Алексей Владимирович (Старший модератор)
Дата отправки: 07.11.2020, 06:29

5
Спасибо большое!
-----
Дата оценки: 07.11.2020, 12:10

Рейтинг ответа:

НЕ одобряю +2 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!


В избранное