首页 > 解决方案 > SQL 计算所有不同的总计和小计

问题描述

嗨,我有一个具有以下架构的表

ID 公司编号 范围ID
1 1 2
2 2 1
3 3 2
4 3 1
5 4 1
6 4 1

我希望能够计算公司的总数,但也能够计算每个范围内有多少不同的公司。

对于表格的示例,结果将是这样的:

范围ID Total_disctinct_companies_of_each_scope Total_companies
1 3 4
2 2 4

这意味着每个范围都应该与 companyID 不同,但同时我希望能够计算独立于范围的公司总数。

我一直在尝试使用 over() 和 partition by,但是由于我没有太多经验,所以我真的不知道该怎么做。

我正在使用 MariaDB。

太感谢了!!

标签: sqlcountmariadbdistinct

解决方案


您可以单独计算不同公司的总数,然后将其加入到返回每个范围总计的查询中。

select 
    scopeID,
    count(distinct companyID) total_distinct_companies_of_each_scope,
    total.total_companies
from 
    tmp
join 
    (select count(distinct companyID) total_companies from tmp) total
group by scopeID

退货

范围ID total_distinct_companies_of_each_scope 总公司
1 3 4
2 2 4

推荐阅读