Гость
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Не могу разобраться с запросом / 4 сообщений из 4, страница 1 из 1
19.01.2022, 18:06
    #40127880
Aforizm
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу разобраться с запросом
Есть вот такие исходные данные:

Таблица t1 – таблица, с персональными данными о клиентах:

t1.account – номер счета;
t1.name – ФИО клиента;
t1.birthday – год рождения (DD/MM/YYYY).

Таблица t2 – таблица, с данными о заказах клиентов:

t2.account – номер счета;
t2.no_of_order – номер заказа;
t2.day_of_order – дата заказа (DD/MM/YYYY);
t2.invoice_amount – сумма заказа по ценам инвойса в гривнах.

И надо сделать вот такие запросы:, с какой стороны к ним подступиться даже не знаю:(

a. Напишите запрос, который выберет номера заказов >500 грн. только тех клиентов, которым на данный момент более 30 лет.

b. Напишите запрос, который выберет максимальный заказ клиента и дату его размещения.

c. Напишите запрос, результат которого – сравнение продаж клиентов в 2018 году против 2017 по группам за возрастом 18-23, 24-30, 31-45 и 46+.
...
Рейтинг: 0 / 0
19.01.2022, 18:33
    #40127895
PizzaPizza
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу разобраться с запросом
a. Выбираете по birthday из t1 и присоединяете t2 с нужной invoice_amount

a. Выбираете все из t1 и присоединяете max(invoice_amount) из t2 сгруппированный по дате

"сравнение продаж клиентов" непонятно. Возможно надо выбрать sum(invoice_amount) за каждый год где клиент birthday от сих до сих. Тогда получится

группа2018201918-23123455432124-301234554321...
...
Рейтинг: 0 / 0
19.01.2022, 19:52
    #40127923
Aforizm
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу разобраться с запросом
PizzaPizza,
с первым вроде разобрался:
select t2.no_of_order from t1 join t2 on t1.account=t2.account where t2.invoice_amount > 500 and t1.birthday <30

второй не понял что значит выбрать все и добавить?
так:
select t1.name from t1 join t2 on t1.account=t2.invoice_amount where t2.invoice_amount = max так?
t2.invoice_amount

третий:
итоговый вид запроса такой как у Вас только еще надо разницу продаж третьим столбиком, но я не понимаю как это сделать :(
...
Рейтинг: 0 / 0
20.01.2022, 06:44
    #40127983
PizzaPizza
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу разобраться с запросом
Aforizm,

рекомендуется использовать определенный join, не просто join
Для первого это inner

2
Выбрать клиенты*, дата заказа, сумма заказа
из клиентов соединение заказы по account
условие: где номер заказа = выбрать самый первый номер заказа для account из отсортированных по invoice_amount desc

3
sum(invoice_amount) за 2018 - sum(invoice_amount) за 2017
это будет разница

прямолинейно это решается подзапросами (не очень помню особенности mysql)

sum(invoice_amount) из заказов где год заказа 2017 и account из тех, которые от этого birthday до того birthday - это одна группа и один год

наверняка можно использовать case но я не помню mysql
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Не могу разобраться с запросом / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]