https://github.com/feronivan/yandex.prilavok_sql-project_mqa
SQL-запросы для приложения "Яндекс.Прилавок".
https://github.com/feronivan/yandex.prilavok_sql-project_mqa
manual-testing sql
Last synced: 5 months ago
JSON representation
SQL-запросы для приложения "Яндекс.Прилавок".
- Host: GitHub
- URL: https://github.com/feronivan/yandex.prilavok_sql-project_mqa
- Owner: feronivan
- Created: 2024-08-14T16:42:49.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-09-11T14:32:03.000Z (almost 2 years ago)
- Last Synced: 2025-06-22T05:05:15.405Z (about 1 year ago)
- Topics: manual-testing, sql
- Homepage:
- Size: 19.5 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## SQL-запросы для приложения "Яндекс.Прилавок".
Яндекс.Прилавок — приложение для заказа продуктов.
Приложение использует базу данных. БД — PostgreSQL. Приложение взаимодействует с БД через npm-пакет `sequelize` поверх пакета `pg` , `sequelize` — ORM для работы с различными БД в node.js. Запросы логируются через модуль `winston`.
Приложение отвечает требованиям REST.
# Задачи и проделанная работа:
1. Посчитать, сколько пользователей зарегистрировано в системе. Это таблица user_model. В результате вывести только количество пользователей.
Запрос к БД:
```
SELECT COUNT(id)
FROM user_model;
```
2. Добавить три новых разных продукта в таблицу product_model.
Запрос к БД:
```
INSERT INTO product_model
VALUES (114, 'milk Parmalat', 100, 1, 1, 12), (115, 'persimmon', 110, 0.5, 1, 6), (116, 'coffee Jacobs Monarch', 550, 0.1, 1, 1);
```
4. Посчитать количество продуктов в каждой категории и вывести id только тех категорий, в которых количество продуктов больше пяти. Это таблица product_model. Результат отсортировать в порядке возрастания количества продуктов.
Запрос к БД:
```
SELECT COUNT(id), "categoryId"
FROM product_model
GROUP BY "categoryId"
HAVING COUNT(id) > 5
ORDER BY COUNT(id) ASC;
```
6. Написать запрос, который будет выводить в системе id всех заказов и возможность внести правки. Название этой колонки "update_order". Если статус заказа позволяет вносить изменения, то в колонку "update_order" нужно вывести "yes". Если правки внести нельзя — вывести "no".
Запрос к БД:
```
SELECT id, 'update_order',
CASE
WHEN "deliveryPrice" >500 AND status=0 OR status=1 THEN 'update_order'='yes'
END
FROM order_model;
```
8. Вывести информацию о продуктах, цена которых находится в диапазоне от 200 до 500. Информация по каждому продукту включает: название продукта, цену, название категории, к которой он относится.
Запрос к БД:
```
SELECT pdm.name AS product_name, pdm.price, cgm.name AS category_name
FROM product_model AS pdm
LEFT OUTER JOIN category_model AS cgm ON pdm."categoryId"=cgm.id
WHERE pdm.price BETWEEN 200 AND 500;
```
10. Для каждой карточки вывести ее название и количество продуктов ("productsCount") для этой карточки. Результат отсортировать по названию карточки.
Запрос к БД:
```
SELECT cm.name AS card_name, SUM("productsCount")
FROM kit_model AS km
LEFT OUTER JOIN card_model AS cm ON km."cardId"=cm.id
GROUP BY card_name
ORDER BY card_name;
```
## Инструменты: