Работа программиста — это не писать код, как думают многие. Работа программиста — это решать возникающие (и довольно разнообразные) задачи. Вместе с Промсвязьбанком мы предлагаем вам попробовать свои силы в работе с базами данных — и немного в математике. Почему базы данных, объяснять, вероятно, не надо: именно они основа любого современного банка. В конце теста вам будет предложено оставить почту. Это нужно для того, чтобы разослать вам результаты и ответы. Возможно вам предложат одну из вакансий в Промсвязьбанке. Дерзайте!

Задача 1

Даны две таблицы со студентами (Students) и их оценками (Marks).

Оценки:
Петров – 2, 5, 5, 4
Иванов – 4, 4
Сидоров – 3, 5, 4

CREATE TABLE #Students(id int,FIO varchar(100))
INSERT INTO #Students
VALUES (1, 'Петров'),(2,'Иванов'),(3,'Сидоров');

CREATE TABLE #Marks(Student_id int, Mark tinyint)
INSERT INTO #Marks (Student_id, Mark)
VALUES (1,2),(1,5),(1,5),(1,4),
(2,4),(2,4),
(3,3),(3,5),(3,4);

Какие результаты вернет следующий запрос?

SELECT s.id,s.FIO,Count(1) AS cnt
from #Students s
left join #Marks m on s.id=m.Student_id and m.Mark=5
GROUP BY s.id,s.FIO
ORDER BY s.id;
Задача 2

Даны две таблицы: Students (id, FIO) и Marks (Student_id, mark)

SELECT FIO
FROM Students s
LEFT JOIN Marks m ON s.id = m.Student_id
WHERE m.mark = 5;

SELECT FIO
FROM Students s
LEFT JOIN Marks m ON s.id = m.Student_id AND m.mark = 5;

Одинаковые ли результаты выдаст запрос, и если нет, то почему?

Задача 3

Банк дал Игорю кредит на 6 месяцев. После окончания каждого месяца сумма оставшегося долга увеличивалась на начисленную банком месячную процентную ставку и тут же уменьшалась на сумму ежемесячного платежа, который вносил Игорь. Ежемесячные платежи были подобраны таким образом, чтобы сумма основного долга уменьшалась равномерно, на одну и ту же величину. Переплата по кредиту в итоге составила 8 процентов от взятой суммы. Какой была месячная процентная ставка?

Задача 4

Дана таблица с пользователями. Для каждого пользователя указана дата регистрации в формате unixtime.

CREATE TABLE users (
    name VARCHAR (100),
    reg_date INT (11)
);

Напишите запрос, который покажет пользователей, годовщина регистрации которых случится в ближайшие 28 дней.

Оставьте адрес почты, чтобы получить ответы.

Предоставляя адрес электронной почты, вы принимаете условия соглашения о персональных данных.

Нашли опечатку? Выделите фрагмент и нажмите Ctrl+Enter.