Лидеры рейтинга

ID: 226425

Konstantin Shvetski

Мастер-Эксперт

941

Россия, Северодвинск


ID: 259041

Алексеев Владимир Николаевич

Мастер-Эксперт

403

Россия, пос. Теплоозёрск, ЕАО


ID: 401284

Михаил Александров

Академик

393

Россия, Санкт-Петербург


ID: 137394

Megaloman

Мастер-Эксперт

328

Беларусь, Гомель


ID: 400669

epimkin

Профессионал

169


ID: 165461

Лангваген Сергей Евгеньевич

Советник

69

Россия, Московская обл.


ID: 400484

solowey

Профессор

66


8.1.6

02.01.2021

JS: 2.2.2
CSS: 4.2.0
jQuery: 3.5.1


 

Установка и настройка серверов баз данных, таблицы и запросы.

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


Коцюрбенко Алексей Владимирович
Статус: Старший модератор
Рейтинг: 2133
solowey
Статус: Профессор
Рейтинг: 66
Alexander Babich
Статус: Профессор
Рейтинг: 0
 

Перейти к консультации №:
 

Консультация онлайн # 199537
Раздел: • Базы данных
Автор вопроса: Анна (Посетитель)
Дата: 06.11.2020, 15:32
Поступило ответов: 1

Здравствуйте, уважаемые эксперты! Помогите, пожалуйста, написать 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) Вывести стоимость среднего заказа в выходные.

Состояние: Консультация закрыта

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

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

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.