SQL: Вывести название и цену для всех анализов
Условие
Дана таблица продаж анализов с полями: название анализа, цена, дата продажи.
Вывести название и цену для всех анализов, которые продавались 5 февраля 2020 и всю следующую неделю.
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
SQL решение
Условие задачи
Нужно выбрать названия и цены анализов, которые продавались с 5 февраля 2020 года на протяжении всей следующей недели (5-11 февраля 2020 включительно).
SQL запрос
SELECT
name,
price
FROM sales
WHERE sale_date >= "2020-02-05"
AND sale_date <= "2020-02-11"
ORDER BY sale_date, name;
Альтернативный вариант с BETWEEN
SELECT
name,
price
FROM sales
WHERE sale_date BETWEEN "2020-02-05" AND "2020-02-11"
ORDER BY sale_date, name;
Объяснение
Фильтр по датам: Условие sale_date >= "2020-02-05" AND sale_date <= "2020-02-11" отбирает все записи в диапазоне от 5 февраля (начало недели) по 11 февраля включительно (конец недели).
BETWEEN оператор: Эквивалентный способ записи более компактен и читаемый. BETWEEN включает оба граничных значения.
Выбранные столбцы: name (название анализа) и price (цена) — ровно то, что требует задача.
Сортировка: ORDER BY sale_date, name помогает видеть данные в хронологическом порядке и облегчает анализ.
Вариант с функцией DATE
Если в таблице дата хранится как timestamp:
SELECT
name,
price
FROM sales
WHERE DATE(sale_date) BETWEEN "2020-02-05" AND "2020-02-11"
ORDER BY sale_date;
Важные моменты
- Граница недели: 5 февраля 2020 — это вторник, следующая неделя завершается 11 февраля (вторник).
- Типы данных: Убедитесь, что используете правильный формат даты для вашей СУБД (ISO 8601: YYYY-MM-DD — универсальный стандарт).
- Дубликаты: Если нужны уникальные пары (название, цена), добавьте
DISTINCT:
SELECT DISTINCT
name,
price
FROM sales
WHERE sale_date BETWEEN "2020-02-05" AND "2020-02-11";
Оптимизация
Для больших таблиц рекомендуется индекс на sale_date:
CREATE INDEX idx_sale_date ON sales(sale_date);
Это ускорит выполнение запроса в 10-100 раз при наличии миллионов записей.