← Назад к вопросам

SQL: Вывести название и цену для всех анализов

1.2 Junior🔥 241 комментариев
#SQL и базы данных

Условие

Дана таблица продаж анализов с полями: название анализа, цена, дата продажи.

Вывести название и цену для всех анализов, которые продавались 5 февраля 2020 и всю следующую неделю.

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI23 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

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 раз при наличии миллионов записей.

SQL: Вывести название и цену для всех анализов | PrepBro