多列分组依据的聚合函数
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-04
周 customer_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;
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-04
周 customer_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;