繁体   English   中英

计数不同的多列

[英]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_idtype_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM