[英]Count distinct of multiple columns
我一直在试图找出一个查询。
假设一个表看起来像这样:
cus_id prod_category agreement_id type_id
111 10 123456 1
111 10 123456 1
111 10 123456 2
111 20 123456 2
123 20 987654 6
999 0 135790 99
999 0 246810 99
and so on...
我想通过agreement_id和type_id获取不同值的 prod_category 计数
所以我想得到这样的结果:
cus_id prod_id count
111 10 2
111 20 1
123 20 1
999 0 2
我们可以使用如下两级聚合查询:
SELECT cus_id, prod_category, COUNT(*) AS count
FROM
(
SELECT DISTINCT cus_id, prod_category, agreement_id, type_id
FROM yourTable
) t
GROUP BY cus_id, prod_category;
内部不同查询删除了重复的元组,外部聚合查询计算每个客户和产品类别的不同元组的数量。
您想要计算每个(cus_id, prod_category)
元组的不同(agreement_id, type_id)
元组。
"Per (cus_id, prod_category) tuple" 翻译成GROUP BY cus_id, prod_category
in SQL。
我们用COUNT(DISTINCT agreement_id, type_id)
计算不同的 (agreement_id, type_id) 元组。
SELECT cus_id, prod_category, COUNT(DISTINCT agreement_id, type_id) AS distinct_count
FROM mytable
GROUP BY cus_id, prod_category
ORDER BY cus_id, prod_category;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.