Гость
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Господа, помогите решить задачи. / 9 сообщений из 9, страница 1 из 1
25.10.2019, 15:29
    #39881632
Mazay2142
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа, помогите решить задачи.
Даны 3 таблицы: tbl_contract, tbl_premiuim и tbl_client.
Таблица tbl_contract содержит список контрактов.
(* - разделители)

Название поля *** Тип поля *** Описание
cnt_id ***********number **** Автоинкрементный идентификатор
cnt_number ******varchar *****Номер контракта
cnt_date *********date *******Дата заключения контракта
cnt_client******** number*****Идентификатор клиента в таблице tbl_client

Таблица tbl_premium содержит премии и возвраты.
Название поля *** Тип поля *** Описание
prm_id **********number *****Автоинкрементный идентификатор
prm_contract *****number *****Ссылка на таблицу контрактов
prm_type ********varchar *****Тип записи. Если NULL, то текущая запись – премия. Если ‘R’, то текущая запись – возврат уплаченной премии клиенту.
prm_due *********number ****Начисленная премия / возврат
prm_collected***** number ****Оплаченная премия / возврат

Таблица tbl_client содержит данные клиентов.
Название поля *** Тип поля *** Описание
cli_id *********** number **** Автоинкрементный идентификатор
cli_fio ***********varchar *****ФИО клиента


Задания
Примечание по выполнению: Таблицы создавать не нужно, они уже созданы. Задание желательно выполнить
на стандартном SQL, без использования особенностей конкретных диалектов (T-SQL, PL/SQL, etc.)
1. Выдать всех клиентов, у которых есть несколько неоплаченных контрактов (по неоплаченным контрактам
нет оплаченных премий) .
2. Выдать всех клиентов и сумму оплаченных ими премий по всем контрактам каждого клиенты (в формате
ФИО - Сумма оплаченных премий по всем котрактам клиента).
3. Выдать все контракты, заключенные в 2018 году, у которых нет ни одной оплаты (нет связанных записей
оплаченных премий в таблице tbl_premium c заполненным prm_collected).
4. Для контрактов с номерами ‘A’, ‘B’ и ‘C’ удалить последний возврат.

Помогите пожалуйста. Мозги уже чёт поплавились и требуется выходной...

Во вложении есть задание с таблицами. (красивое)
...
Рейтинг: 0 / 0
25.10.2019, 15:37
    #39881638
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа, помогите решить задачи.
Mazay2142,

Показывайте DDL ваших таблиц и ваши попытки решения.
...
Рейтинг: 0 / 0
25.10.2019, 15:47
    #39881651
Mazay2142
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа, помогите решить задачи.
miksoft,

Задание желательно выполнить на стандартном SQL, без использования особенностей конкретных диалектов (T-SQL, PL/SQL, etc.)
Обычно сталкивался только с запросами уровня select что-то from одна таблица)

Попытки были на листе бумаги, который остался в другом месте. Возможности заново сейчас всё с тем же успехом написать - нет. Не то, что проверить, верно или нет.
Скинул другу, который шарит, а он на работе и не может помочь.
Если есть возможность, помогите плиз.
Гарантирую, что это не задача даже контрольной, ни тестовое, просто для себя.
Пытаюсь понять, как правильно на примере данных задач написать запросы.
...
Рейтинг: 0 / 0
25.10.2019, 15:59
    #39881658
Melkij
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа, помогите решить задачи.
Mazay2142Гарантирую, что это не задача даже контрольной, ни тестовое, просто для себя.
Mazay2142Мозги уже чёт поплавились и требуется выходной...
Ну так и устройте выходной. Задача же для себя, пару дней подождать никакой проблемы. А там и листик свой найдёте.
...
Рейтинг: 0 / 0
25.10.2019, 16:05
    #39881661
Mazay2142
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа, помогите решить задачи.
Melkij,

А потом напишу здесь свои, скорее всего, неправильные предположения, и мне станет чертовски неудобно, что я такое вообще написал))))
Ну ладно.
Только не бейте.
...
Рейтинг: 0 / 0
10.03.2020, 23:12
    #39936133
alexus0285
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа, помогите решить задачи.
Mazay2142,
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
SELECT DISTINCT cli.cli_fio AS 'FIO' FROM tbl_premium prm
	LEFT JOIN  tbl_contract cnt
			ON prm.prm_contract = cnt.cnt_id 
	LEFT JOIN tbl_client cli
			ON cnt.cnt_client = cli.cli_id
where prm.prm_type IS NULL 
AND (prm.prm_collected = 0 OR prm.prm_collected IS NULL)

SELECT cli.cli_fio AS 'FIO', SUM(prm.prm_collected) AS 'PayedContractSum' FROM tbl_premium prm
	LEFT JOIN  tbl_contract cnt
			ON prm.prm_contract = cnt.cnt_id 
	LEFT JOIN tbl_client cli
			ON cnt.cnt_client = cli.cli_id
where prm.prm_type IS NULL 
AND prm.prm_collected > 0 
AND prm.prm_collected IS NOT NULL
group by cli.cli_fio

SELECT  DISTINCT cnt.cnt_number from tbl_premium prm 
	LEFT JOIN tbl_contract cnt
		ON prm.prm_contract = cnt.cnt_id
WHERE prm.prm_type IS NULL 
AND (prm.prm_collected = 0 OR prm.prm_collected IS NULL)
AND cnt.cnt_date between '01.01.2018' and '31.12.2018'

BEGIN TRAN
DELETE FROM tbl_premium  WHERE prm_id IN 
(SELECT MAX(prm.prm_id) prm_id from tbl_premium prm 
	INNER JOIN tbl_contract cnt
		ON prm.prm_contract = cnt.cnt_id
	WHERE prm.prm_type = 'R' 
	AND cnt.cnt_number IN ('A','B','C')
GROUP BY prm.prm_contract)
ROLLBACK;
...
Рейтинг: 0 / 0
11.03.2020, 14:40
    #39936284
Alex_Ustinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа, помогите решить задачи.
alexus0285,

контрольная уже закончилась давно...
...
Рейтинг: 0 / 0
12.03.2020, 21:06
    #39936843
Mazay2142
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа, помогите решить задачи.
alexus0285, Спасибо, поздно уже, ибо нашёл другие варианты. Но почитаю. Лишним не будет
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
01.04.2021, 12:00
    #40058821
luxlite
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Господа, помогите решить задачи.
Mazay2142,

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


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