Напиши запрос, который посчитает разницу максимальной и минимальной цены каждого продукта в категории ‘масло сливочное и маргарин’ на 10 июня 2019 года. Назови переменную max_min_diff. **Переведи строковые значения дат в формат даты.
Выведи название продукта, разницу между максимальной и минимальной ценами.
Напомним названия нужных столбцов:
категория — поле category;
дата — поле date_upd;
цена — поле price;
название продукта — поле name.
sql
SELECT name, price, date_upd
FROM products
WHERE category = 'масло сливочное и маргарин'
Затем мы преобразуем строковые значения дат в формат даты. Для этого воспользуемся функцией `STR_TO_DATE` в MySQL:
sql
SELECT name, price, STR_TO_DATE(date_upd, '%d-%b-%y') AS date_upd
FROM products
WHERE category = 'масло сливочное и маргарин'
Теперь, когда у нас есть записи в нужной категории и даты преобразованы, мы можем перейти к следующему шагу: группировке записей по названию продукта. Для этого используем ключевое слово `GROUP BY`:
sql
SELECT name, price, STR_TO_DATE(date_upd, '%d-%b-%y') AS date_upd
FROM products
WHERE category = 'масло сливочное и маргарин'
GROUP BY name
Затем нам нужно найти максимальную и минимальную цены для каждой группы. Для этого используем функции `MAX` и `MIN`:
sql
SELECT name, MAX(price) AS max_price, MIN(price) AS min_price, STR_TO_DATE(date_upd, '%d-%b-%y') AS date_upd
FROM products
WHERE category = 'масло сливочное и маргарин'
GROUP BY name
Наконец, для вычисления разницы между максимальной и минимальной ценами мы добавим новую вычисляемую колонку в запрос и назовем ее `max_min_diff`:
sql
SELECT name, MAX(price) AS max_price, MIN(price) AS min_price, MAX(price) - MIN(price) AS max_min_diff, STR_TO_DATE(date_upd, '%d-%b-%y') AS date_upd
FROM products
WHERE category = 'масло сливочное и маргарин'
GROUP BY name
Теперь, когда у нас есть полный запрос, мы можем выполнить его и получить результаты.
Например, результат может выглядеть следующим образом:
|-------------------------|------------------|-------------------|------------------|
| name | max_price | min_price | max_min_diff |
|-------------------------|------------------|-------------------|------------------|
| Масло сливочное | 150 | 100 | 50 |
| Маргарин | 120 | 80 | 40 |
| Бутербродное масло | 200 | 150 | 50 |
|-------------------------|------------------|-------------------|------------------|
Таким образом, мы получили таблицу, в которой указано название продукта, максимальная и минимальная цены для каждого продукта, а также разница между максимальной и минимальной ценами.Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет