为日期列和3键的每个值计算某个列的不同值 [英] Counting distinct values of a certain column for each value of a date column and 3 key

查看:123
本文介绍了为日期列和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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆