Создание индикатора по одному и тому же ID в разные годы в PROC SQL/SQL

Я хотел бы создать индикатор на основе идентификатора и типа продукта. Мои данные:

Year ID Purchase_Category
2020 1  Kitchen
2020 2  Home
2020 2  Kitchen
2020 3  Home
2021 1  Home
2021 2  Kitchen
2021 3  Kitchen

Если кто-то с тем же идентификатором купил «Кухню» в 2020 году, а затем «Дом» в 2021 году или наоборот, то он считается целостным. ИД 2 в данном случае не является целостным, т.к. Дом и Кухня были куплены в одном году. Вывод должен выглядеть так:

ID Indicator
1  Holistic
2  Not Holistic
3  Holistic
3 метода стилизации элементов HTML
3 метода стилизации элементов HTML
Когда дело доходит до применения какого-либо стиля к нашему HTML, существует три подхода: встроенный, внутренний и внешний. Предпочтительным обычно...
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
0
0
17
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Что-то вроде этого может сработать:

SELECT ID, CASE COUNT(*) WHEN 1 THEN 'Not Holistic' ELSE 'Holistic' END AS INDICATOR
FROM (SELECT ID, YEAR, COUNT(*) FROM DATA GROUP BY ID, YEAR)
GROUP BY ID

Сначала определите разные годы для каждого идентификатора, а затем из этого набора, если идентификатор появляется только один раз, то все было куплено в одном году, в противном случае были куплены продукты в разные годы.

Вам просто нужен отдельный счет в столбце Year на ID. Два шага не нужны.

select ID,
    case when count(distinct "Year") > 1
        then 'Holistic' else 'Not Holistic' end as Indicator
from T
group by ID

Так же легко было бы сказать:

    case when max("Year") > min("Year") then ...

Я не знаю, какой из них кажется более естественным. Если у вас много данных, второй подход потенциально быстрее.

Другие вопросы по теме