Oracle Distinct查询-获取每年不同的值



我有一个具有的表

  • 客户访问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)

未按使用的分组