powered by simpleCommunicator - 2.0.48     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Не могу разобраться с запросом
4 сообщений из 4, страница 1 из 1
Не могу разобраться с запросом
    #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
Не могу разобраться с запросом
    #40127895
PizzaPizza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a. Выбираете по birthday из t1 и присоединяете t2 с нужной invoice_amount

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

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

группа2018201918-23123455432124-301234554321...
...
Рейтинг: 0 / 0
Не могу разобраться с запросом
    #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
Не могу разобраться с запросом
    #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
4 сообщений из 4, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Не могу разобраться с запросом
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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