Оператор SQL, чтобы показать клиентам, что в 2018 году они впервые купили серию продуктов, которую они никогда не покупали в предыдущие годы - PullRequest
0 голосов
/ 17 октября 2018

Моя база данных работает на сервере MySQL.Знание SQL: Начинающий.

Описание данных: В моей базе данных есть только 1 таблица, содержащая данные о продажах.Соответствующие столбцы для запроса:

  • Год (smallint)
  • Клиент (текст)
  • Product_Series (текст)
  • Total_Sales_EUR (двойная точность)

Теперь я хотел бы, чтобы оператор SQL показал мне таблицу клиентов, которые впервые купили серию продуктов, которую они никогда не покупали в предыдущие годы.

Итак, скажем, есть клиент, который купил Product Series 1,2,3 в предыдущие годы и в 2018 году впервые купил Product Series 4.Покупатель, который купил Продукт 4-й серии в предыдущие годы и снова в 2018 году, не должен отображаться в таблице результатов.Таблица результатов должна содержать:

  • Год (текущий год)
  • Клиент
  • Product_Series (приобретенный впервые)
  • ИтогоПродажи

Это мой скромный код.Полное попадание в камень с условием.

Select "Year", "Customer", "Product_Series", "Total_Sales_EUR"
From databasetable
Where

Примечание: таблица не имеет уникального ключа.Надеюсь, это не усложнит ситуацию. Если я пропустил какую-либо важную информацию, пожалуйста, дайте мне подсказку.

Благодарен за любую помощь или совет.

1 Ответ

0 голосов
/ 17 октября 2018

Вы можете комбинировать операторы SQL, используя оператор is [not] in ( ... ).Примерно так:

select users who bought product 1,2,3,4 where user_id not in (select all users_id who did not buy product 4 in 2018)

Редактировать: вам понадобится идентификатор, так как в is in вы можете сравнивать только значения

ИЛИ ВЫ МОЖЕТЕ ТАКЖЕ УЗНАТЬ КОДСАМОСТОЯТЕЛЬНО ВМЕСТО ПОПЫТКИ, ЧТОБЫ ПОЛУЧИТЬ ДРУГИЕ, ЧТОБЫ РАБОТАТЬ ДЛЯ ВАС БЕСПЛАТНО!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...