我有一个具有的表
- 客户访问ID
- 客户ID
- 许多其他具有值的列
- 年份
我想知道每年唯一客户的数量(还有其他列值(我不是在做一个小组。
查询类似的内容
select distinct(CustomerID) from CustomerVisits where year in (2016,2017,2018,2019)
这并不是每年都基于唯一的客户进行查询。
例如,如果customerID";5544";2016年来了4次,2018年来了3次。我希望我的查询输出在2016年和2018年分别显示1次和1次。我的查询总共显示了1次,这不是我想要的。
有人能帮忙吗?
您需要在之前使用group
select year, count(distinct CustomerID) as CustomerID
from CustomerVisits
where year in (2016,2017,2018,2019)
Group by CustomerID, year
就我理解你的要求而言,你可以使用两个不同的列,如下所示:
select distinct year, CustomerID
from CustomerVisits
where year in (2016,2017,2018,2019)
如果您想保留所有列,可以使用窗口函数
SELECT *
, COUNT(DISTINCT CustomerID) OVER (PARTITION BY year) as customer_in_same_year
FROM CustomerVisits
WHERE year IN (2016,2017,2018,2019)
未按使用的分组