|
Не могу разобраться с запросом
|
|||
---|---|---|---|
#18+
Есть вот такие исходные данные: Таблица 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+. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2022, 18:06 |
|
Не могу разобраться с запросом
|
|||
---|---|---|---|
#18+
a. Выбираете по birthday из t1 и присоединяете t2 с нужной invoice_amount a. Выбираете все из t1 и присоединяете max(invoice_amount) из t2 сгруппированный по дате "сравнение продаж клиентов" непонятно. Возможно надо выбрать sum(invoice_amount) за каждый год где клиент birthday от сих до сих. Тогда получится группа2018201918-23123455432124-301234554321... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2022, 18:33 |
|
Не могу разобраться с запросом
|
|||
---|---|---|---|
#18+
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 третий: итоговый вид запроса такой как у Вас только еще надо разницу продаж третьим столбиком, но я не понимаю как это сделать :( ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2022, 19:52 |
|
Не могу разобраться с запросом
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2022, 06:44 |
|
|
start [/forum/topic.php?fid=47&fpage=2&tid=1827814]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
29ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
2ms |
others: | 258ms |
total: | 381ms |
0 / 0 |