为日期列和3键的每个值计算某个列的不同值 [英] Counting distinct values of a certain column for each value of a date column and 3 key
本文介绍了为日期列和3键的每个值计算某个列的不同值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
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'
我想统计不同的 new key1,key2,key3
-s为每个日期
:
2015-11-11 3 - (两个截然不同的key1,key2,key3第2,3行)
2015-11-12 3 - (新的密钥和不同的密钥1,密钥2,密钥3)
我该如何做到这一点?
解决方案
假设你的密钥没有|如果不是这种情况,请选择另一个字符:
SELECT DATE,EXACT_COUNT_DISTINCT(key)AS键$ b $作为新的
FROM(SELECT DATE,CONCAT(key1,'|',key2,'|')从$(
SELECT DATE,key,LEAD(DATE)OVER(PARTITION BY key ORDER BY DATE DESC) ,key3)AS键
FROM YourTable GROUP BY 1,2)
)WHERE new IS NULL
GROUP BY DATE
ORDER BY DATE
正如您可以注意到的,这只是对您之前问题的答案的轻微采用,我将所有三个密钥合并为一个 - 并将完全相同的代码在之前
I have a table with four columns, looking like this:
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'
I want to count the number of distinct new key1, key2, key3
-s for each date
:
2015-11-11 3 -- (two distinct key1, key2, key3 row 2,3)
2015-11-12 3 -- (new key and distinct key1, key2, key3)
How can I do this?
解决方案
Assuming your keys do not have | char inside them (pick another char if this is not a case:
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
As you can notice this is just slight adoptation of my answer to your previous question. I combined all three keys into one - and applied exact same code as before
这篇关于为日期列和3键的每个值计算某个列的不同值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文