SQL_Begin
/
Mikhailov_D_M_dz_1.sql
110 строк · 5.0 Кб
1--=============== МОДУЛЬ 2. РАБОТА С БАЗАМИ ДАННЫХ =======================================
2--= ПОМНИТЕ, ЧТО НЕОБХОДИМО УСТАНОВИТЬ ВЕРНОЕ СОЕДИНЕНИЕ И ВЫБРАТЬ СХЕМУ PUBLIC===========
3SET search_path TO public;
4
5--======== ОСНОВНАЯ ЧАСТЬ ==============--
6/* Михайлов Дмитрий Александрович */
7
8--ЗАДАНИЕ №1
9--Выведите уникальные названия городов из таблицы городов.
10
11SELECT DISTINCT city FROM city;
12
13
14
15--ЗАДАНИЕ №2
16--Доработайте запрос из предыдущего задания, чтобы запрос выводил только те города,
17--названия которых начинаются на “L” и заканчиваются на “a”, и названия не содержат пробелов.
18
19SELECT DISTINCT city FROM city
20WHERE city LIKE 'L%a' and not city LIKE '% %';
21
22
23
24--ЗАДАНИЕ №3
25--Получите из таблицы платежей за прокат фильмов информацию по платежам, которые выполнялись
26--в промежуток с 17 июня 2005 года по 19 июня 2005 года включительно,
27--и стоимость которых превышает 1.00.
28--Платежи нужно отсортировать по дате платежа.
29
30SELECT payment_id, payment_date, amount FROM payment
31WHERE payment_date BETWEEN '17-06-2005' AND '19-06-2005' and amount > 1
32order by payment_date;
33
34
35--ЗАДАНИЕ №4
36-- Выведите информацию о 10-ти последних платежах за прокат фильмов.
37
38SELECT payment_date, payment_id, amount from payment
39ORDER BY payment_date DESC LIMIT 10;
40
41
42--ЗАДАНИЕ №5
43--Выведите следующую информацию по покупателям:
44-- 1. Фамилия и имя (в одной колонке через пробел)
45-- 2. Электронная почта
46-- 3. Длину значения поля email
47-- 4. Дату последнего обновления записи о покупателе (без времени)
48--Каждой колонке задайте наименование на русском языке.
49
50SELECT first_name || ' ' || last_name as "ФИО", email as "Почта",
51CHARACTER_LENGTH (email) as "Длина почты", last_update as "Крайнее обновление"
52from customer;
53
54
55
56--ЗАДАНИЕ №6
57--Выведите одним запросом только активных покупателей, имена которых KELLY или WILLIE.
58--Все буквы в фамилии и имени из верхнего регистра должны быть переведены в нижний регистр.
59
60SELECT first_name, last_name, active
61FROM customer
62WHERE first_name IN('KELLY', 'WILLIE') AND(active = 1);
63
64
65
66--======== ДОПОЛНИТЕЛЬНАЯ ЧАСТЬ ==============
67
68--ЗАДАНИЕ №1
69--Выведите одним запросом информацию о фильмах, у которых рейтинг "R"
70--и стоимость аренды указана от 0.00 до 3.00 включительно,
71--а также фильмы c рейтингом "PG-13" и стоимостью аренды больше или равной 4.00.
72
73SELECT film_id, title, description, rating, rental_rate
74FROM film
75where (rating = 'R' and rental_rate between 0.00 and 3.00)
76or (rating = 'PG-13' and rental_rate >= 4.0)
77order by rental_rate;
78
79
80
81--ЗАДАНИЕ №2
82--Получите информацию о трёх фильмах с самым длинным описанием фильма.
83
84SELECT film_id, title,
85description,
86CHARACTER_LENGTH(description) as Длина_описания
87FROM film
88ORDER BY CHARACTER_LENGTH(description) desc LIMIT 3;
89
90
91
92--ЗАДАНИЕ №3
93-- Выведите Email каждого покупателя, разделив значение Email на 2 отдельных колонки:
94--в первой колонке должно быть значение, указанное до @,
95--во второй колонке должно быть значение, указанное после @.
96
97SELECT customer_id, email,
98LEFT(email, POSITION('@' IN email)-1) as "Адрес_перед_@",
99RIGHT(email, POSITION('@' IN email)+1) as "Адрес_после_@"
100FROM customer;
101
102
103--ЗАДАНИЕ №4
104--Доработайте запрос из предыдущего задания, скорректируйте значения в новых колонках:
105--первая буква должна быть заглавной, остальные строчными.
106
107SELECT customer_id, email,
108INITCAP(LEFT(email, POSITION('@' IN email)-1)) as "Адрес_перед_@",
109INITCAP(RIGHT(email, POSITION('@' IN email)+1)) as "Адрес_после_@"
110FROM customer;
111
112
113