2017-04-19 182 views
0
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 

我已经通过组合多个数据库(上面创建的表的示例)创建了一个表。我想每个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作为一个数还是两个数?

回答

2

我想你想要count(distinct)

select week, customer_id, count(distinct cid) 
from table 
group by week, customer_id; 
+0

我觉得计数(不同的CID)是我想要的,但只是好奇,如果我按周做组,CUSTOMER_ID,L1,而不是按周, customer_id,会有什么不同吗? – Arman

+0

@阿曼。 。 。根据您的样本数据,它会有所作为。 –

0
SELECT WEEK, 
     CUSTOMER_ID, 
     COUNT(DISTINCT CID) 
    FROM TABLE 
GROUP BY WEEK,CUSTOMER_ID;