为日期列和 3 个键的每个值计算特定列的不同值
Counting distinct values of a certain column for each value of a date column and 3 key
我有一个包含四列的 table,如下所示:
id,name, key1, key2, key3, date
1,'A' ,'x1','y1','z1','2015-11-11'
2,'A' ,'x1','y2','z1','2015-11-11'
3,'B' ,'x1','y2','z1','2015-11-11'
4,'B' ,'x1','y1','z2','2015-11-11'
5,'A' ,'x1','y1','z1','2015-11-12'
6,'A' ,'x1','y2','z3','2015-11-12'
7,'B' ,'x2','y3','z3','2015-11-12'
8,'B' ,'x2','y1','z4','2015-11-12'
9,'D' ,'x2','y1','z4','2015-11-12'
我想计算每个 date
:
的不同 new key1, key2, key3
-s 的数量
2015-11-11 3 -- (two distinct key1, key2, key3 row 2,3)
2015-11-12 3 -- (new key and distinct key1, key2, key3)
我该怎么做?
假设你的钥匙没有 |它们里面的字符(如果不是这种情况,请选择另一个字符:
SELECT DATE, EXACT_COUNT_DISTINCT(key) AS keys
FROM (
SELECT DATE, key, LEAD(DATE) OVER(PARTITION BY key ORDER BY DATE DESC) AS new
FROM (SELECT DATE, CONCAT(key1, '|', key2, '|', key3) AS key
FROM YourTable GROUP BY 1,2)
) WHERE new IS NULL
GROUP BY DATE
ORDER BY DATE
如您所见,这只是对我对您之前问题的回答的轻微采纳。我将所有三个键合二为一 - 并应用了与之前完全相同的代码
我有一个包含四列的 table,如下所示:
id,name, key1, key2, key3, date
1,'A' ,'x1','y1','z1','2015-11-11'
2,'A' ,'x1','y2','z1','2015-11-11'
3,'B' ,'x1','y2','z1','2015-11-11'
4,'B' ,'x1','y1','z2','2015-11-11'
5,'A' ,'x1','y1','z1','2015-11-12'
6,'A' ,'x1','y2','z3','2015-11-12'
7,'B' ,'x2','y3','z3','2015-11-12'
8,'B' ,'x2','y1','z4','2015-11-12'
9,'D' ,'x2','y1','z4','2015-11-12'
我想计算每个 date
:
key1, key2, key3
-s 的数量
2015-11-11 3 -- (two distinct key1, key2, key3 row 2,3)
2015-11-12 3 -- (new key and distinct key1, key2, key3)
我该怎么做?
假设你的钥匙没有 |它们里面的字符(如果不是这种情况,请选择另一个字符:
SELECT DATE, EXACT_COUNT_DISTINCT(key) AS keys
FROM (
SELECT DATE, key, LEAD(DATE) OVER(PARTITION BY key ORDER BY DATE DESC) AS new
FROM (SELECT DATE, CONCAT(key1, '|', key2, '|', key3) AS key
FROM YourTable GROUP BY 1,2)
) WHERE new IS NULL
GROUP BY DATE
ORDER BY DATE
如您所见,这只是对我对您之前问题的回答的轻微采纳。我将所有三个键合二为一 - 并应用了与之前完全相同的代码