Тест
.pdfНомер группы |
9300 |
|
|
|
ФИО: |
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
Задание |
1 |
|
2 |
|
3 |
4 |
5 |
|
6 |
7 |
8 |
9 |
10 |
11 |
Сумма |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
баллы |
10 |
|
20 |
|
20 |
20 |
50 |
|
50 |
45 |
45 |
70 |
85 |
85 |
500 |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
получено |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1.(10 баллов) Какое из следующих выражений выведет итоговую сумму столбца ”price”в
таблице ”sales”?
SELECT TOTALSUM(price) FROM sales
SELECT SUM(price) WHERE sales
X SELECT SUM(price) FROM sales
SELECT TOTAL(price) FROM sales
2.(20 баллов) Что будет результатом SQL запроса: SELECT column1 FROM table3 GROUP BY column2 WHERE column2<>NULL
Результатом будут непустые значения столбца column2
X SQL запрос вызовет ошибку
Результатом всегда будет пустое множество
3.(20 баллов) Могут ли в запросах SQL одновременно использоваться ”HAVING”и ”WHERE”?
X да
нет
4.(20 баллов) Какой порядок ключевых слов в команде select правильный?
SELECT … FROM … GROUP BY … WHERE …
SELECT … FROM … ORDER BY … WHERE …
SELECT … FROM … ORDER BY … GROUP BY …
X SELECT … FROM … WHERE … GROUP BY …
Дана таблица T2 с полями a, b, c:
a |
b |
c |
3 |
6 |
1 |
5 |
2 |
1 |
5.(50 баллов) Какое значение вернёт SELECT SUM(a*b*c)-MAX(b)+COUNT(*) FROM T2
5.24
6.(50 баллов) Какое значение вернёт SELECT SUM(a)*SUM(b)*SUM(c)-MIN(a*b) FROM T2
6.118
В базе данных имеется таблица book со следующими столбцами:
id — уникальный числовой идентификатор издания, первичный ключ; title — название книги;
author — автор книги (принимаем допущение, что у каждой книги только один автор);
publisher — издательство, в котором вышла книга; pub_year — год издания книги.
7.(45 баллов) Необходимо выбрать авторов, чьи книги переиздавались в том же или в другом издательстве. Выберите правильный вариант запроса.
X SELECT author FROM book GROUP BY author HAVING count(id)>1;
SELECT author FROM book GROUP BY author, title HAVING count(id)>1;
SELECT author FROM book GROUP BY publisher HAVING сount(author)>1;
SELECT author FROM book WHERE count(id)>1;
8.(45 баллов) Напишите запрос, возвращающий авторов, у которых с 2000 по 2012 год вышло более 5 книг
select author from book
where pub_year >= 2000 and pub_year <= 2012 group by author having count(*) > 5
9.(70 баллов) Напишите запрос, возвращающий издательство, которое выпустило в 2012 году наибольшее количество книг
select max(count) from (
select publisher, count(*) as count from book where pub_year = 2012 group by publisher
) as tmp
В базе данных имеется таблица client со следующими столбцами:
id_client — уникальный числовой идентификатор абонента, первичный ключ; fullname — ФИО абонента;
rate — тариф (руб. за мин.);
id_client |
fullname |
rate |
1 |
Петров А.А. |
1.1 |
2 |
Волков П.А. |
1.05 |
3 |
Зайцев В.В. |
1.3 |
4 |
Краснова Н.В. |
1.1 |
5 |
Шульц Ш. |
1.4 |
и таблица client_call со следующими столбцами:
id_client — ссылка на уникальный идентификатор абонента, внешний ключ; call_time — дата и время звонка;
duration — длительность звонка (мин.);
id_client |
call_time |
duration |
1 |
2012.12.05 10:30:52 |
3 |
2 |
2012.12.05 12:10:02 |
5 |
2 |
2012.12.05 12:16:12 |
1 |
4 |
2012.12.05 13:19:22 |
2 |
5 |
2012.12.05 16:10:42 |
4 |
10.(85 баллов) Напишите запрос, возвращающий для каждого абонента стоимость всех его разговоров.
select client.id_client, fullname, coalesce(sum(rate * duration), 0) as cost from client left join call on call.id_client = client.id_client
group by client.id_client
11.(85 баллов) Напишите запрос, возвращающий список ФИО абонентов, совершивших только один звонок.
select fullname
from client join call on call.id_client = client.id_client group by fullname having count(*) = 1