在 PROC SQL/SQL 中根据不同年份的相同 ID 创建指标

Creating an indicator based on the same ID in different years in PROC SQL/SQL

我想根据 ID 和产品类型创建一个指标。我的数据:

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

如果 ID 相同的人在 2020 年购买了 Kitchen,然后在 2021 年购买了 Home,反之亦然,则他们被视为整体。本例中的 ID 2 不是整体的,因为 Home 和 Kitchen 是在同一年购买的。 输出应如下所示:

ID Indicator
1  Holistic
2  Not Holistic
3  Holistic

类似这样的方法可能有效:

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

首先,确定每个 ID 的不同年份,然后从该集合中,如果一个 ID 只出现一次,则所有东西都是同一年购买的,否则有不同年份购买的产品。

您只需要在每个 IDYear 列上有一个不同的计数。不需要两步。

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 ...

不知道哪个看起来更自然。如果您有大量数据,则第二种方法可能更快。