--3.1
SELECT *
FROM products
--3.2
SELECT *
FROM products
ORDER BY name
--Для сортировки значений по какой-либо колонке в SQL используется оператор ORDER BY
-- с ключевыми словами ASC (по возрастанию) или DESC (по убыванию).
--При этом по умолчанию сортировка происходит по возрастанию,
--т.е. ASC указывать не обязательно. Для сортировки по убыванию после ORDER BY
-- необходимо явно указать DESC
--3.3
SELECT *
FROM courier_actions
ORDER BY courier_id, action, time desc
LIMIT 1000
--3.4
SELECT name,
price
FROM products
ORDER BY price desc
LIMIT 5
--3.5
SELECT name as product_name,
price as product_price
FROM products
ORDER BY price desc
LIMIT 5
--3.6
SELECT name,
length(name) as name_length,
price
FROM products
ORDER BY name_length desc
LIMIT 1
--3.7
--Примените последовательно функции UPPER и SPLIT_PART к колонке name и
--преобразуйте наименования товаров в таблице products так,
--чтобы от названий осталось только первое слово, записанное в верхнем регистре.
SELECT name,
upper(split_part(name, ' ', 1)) as first_word,
price
FROM products
ORDER BY name limit 1000
--3.8
--Измените тип колонки price из таблицы products на VARCHAR.
--Выведите колонки с наименованием товаров, ценой в исходном формате и ценой в формате VARCHAR.
SELECT name,
price,
price::varchar as price_char
FROM products
ORDER BY name
--Вариант верного решения:
SELECT name,
price,
cast(price as varchar) as price_char
FROM products
ORDER BY name
--3.9
--Для первых 200 записей из таблицы orders выведите информацию в
--следующем виде (обратите внимание на пробелы):
--Заказ № [id_заказа] создан [дата]
SELECT concat('Заказ № ', order_id, ' создан ', date(creation_time)) as order_info
FROM orders
ORDER BY order_id limit 200
--3.10
SELECT courier_id,
date_part('year', birth_date) as birth_year
FROM couriers
ORDER BY birth_year desc, courier_id
--3.11
--Как и в предыдущем задании, снова выведите id всех курьеров и их годы рождения, только
--теперь к извлеченному году примените функцию COALESCE.
--Укажите параметры функции так, чтобы вместо NULL значений в результат попадало текстовое
--значение unknown
--Не забудьте учесть, что unknown — значение типа VARCHAR, а значит, извлечённый из
--даты год нужно тоже привести к этому типу. Поэтому сначала извлеките год,
--затем преобразуйте его в текст и далее применяйте к полученному значению функцию COALESCE
SELECT courier_id,
coalesce(cast(date_part('year', birth_date) as varchar), 'unknown') as birth_year
FROM couriers
ORDER BY birth_year desc, courier_id
--Вариант верного решения:
SELECT courier_id,
coalesce(date_part('year', birth_date)::varchar, 'unknown') as birth_year
FROM couriers
ORDER BY birth_year desc, courier_id
--3.12
--повысить цену всех товаров в таблице products на 5%.
SELECT product_id,
name,
price as old_price,
price + price * 0.05 as new_price
FROM products
ORDER BY new_price desc, product_id
--Вариант верного решения:
SELECT product_id,
name,
price as old_price,
price*1.05 as new_price
FROM products
ORDER BY new_price desc, product_id
--3.13
SELECT product_id,
name,
price as old_price,
round(price*1.05, 1) as new_price
FROM products
ORDER BY new_price desc, product_id
--3.14
--Повысьте цену на 5% только на те товары, цена которых превышает 100 рублей.
--Цену остальных товаров оставьте без изменений.
--Также не повышайте цену на икру, которая и так стоит 800 рублей.
SELECT product_id,
name,
price as old_price,
case when price = 800 then price * 1
when price > 100 then price * 1.05
else price * 1 end as new_price
FROM products
ORDER BY new_price desc, product_id
--Вариант верного решения:
SELECT product_id,
name,
price as old_price,
case when price <= 100 or
name = 'икра' then price
when price > 100 then price*1.05
else 0 end new_price
FROM products
ORDER BY new_price desc, product_id
--3.15
--Вычислите НДС каждого товара в таблице products и рассчитайте цену без учёта НДС.
--Выведите всю информацию о товарах, включая сумму налога и цену без его учёта.
--Так как НДС уже включён в текущую цену, налог считаем следующим образом:
--делим цену на 120% и умножаем на 20%.
SELECT product_id,
name,
price,
round(price/120*20, 2) as tax,
round(price - price/120*20, 2) as price_before_tax
FROM products
ORDER BY price_before_tax desc, product_id
To embed this project on your website, copy the following code and paste it into your website's HTML: