多列分组依据的聚合函数

Aggregation function on Group by on multiple columns

WEEK    | CID | CUSTOMER_ID | L1
2017-04 | 12  | 1           | ABC
2017-04 | 13  | 1           | ABC
2017-04 | 13  | 1           | ABC
2017-04 | 16  | 1           | DFG
2017-04 | 15  | 2           | DFG
2017-14 | 14  | 1           | DFG

我通过组合许多数据库创建了一个 table(上面是创建的 table 的示例)。我想要每个 customer_id 每周出现的次数(例如 2017-04customer_id 1 出现 3 次,我们想将第 2 行和第 3 行视为相同(所以 1计数)然后第 1 行和第 4 行使其成为 3 次。

所以,输出应该是:

WEEK    | CUSTOMER_ID | COUNT(CUSTOMER_ID)
2017-04 | 1           | 3
2017-04 | 2           | 1
2017-14 | 1           | 1

我正在尝试以下几行:

select
    week, customer_id, count(customer_id)
from
    table
group by 
    week, cid, customer_id, L1;

但是,我想确认这样做会把第 2 行和第 3 行计为一次还是两次?

我想你想要 count(distinct):

select week, customer_id, count(distinct cid)
from table
group by week, customer_id;
SELECT WEEK, 
       CUSTOMER_ID,
       COUNT( DISTINCT CID)
  FROM TABLE
GROUP BY WEEK,CUSTOMER_ID;