我有如下表格
CID ITEM FLAG
C_1 ITEM_1 0
C_1 ITEM_2 1
C_1 ITEM_2 1
C_1 ITEM_2 0
C_2 ITEM_2 0
C_3 ITEM_2 1
C_3 ITEM_2 1
C_3 ITEM_3 1
我希望制作像
这样的表格CID UNIQ_CNT_OF_CID
ITEM_1 0
ITEM_2 2
ITEM_3 1
问题是 - 我想对同一CID
计算一次CID
。
我试过了,
SELECT ITEM, CID,
case when FLAG =1 then count(distinct CID) else 0 end as COUNTER
from T
group by ITEM
请帮助!!
答案 0 :(得分:1)
如果不让我知道,我想我理解你的问题。
您可以使用窗口函数来完成此任务:
SELECT
ITEM,
COUNT(DISTINCT CID) OVER (PARTITION BY ITEM) AS UNIQ_CNT_OF_CID
FROM T
这将为您提供相同数量的行,因此如果您想要这个行中的唯一,您可以使用CTE或子查询,如下所示:
SELECT DISTINCT
ITEM, UNIQ_CNT_OF_CID
FROM
(
SELECT
ITEM,
COUNT(DISTINCT CID) OVER (PARTITION BY ITEM) AS UNIQ_CNT_OF_CID
FROM T
) final
答案 1 :(得分:1)