SQL 计算所有非重复总计和小计
SQL count all distinct and sub totals
您好,我有一个 table 具有以下架构
ID
companyID
scopeID
1
1
2
2
2
1
3
3
2
4
3
1
5
4
1
6
4
1
我希望能够计算公司总数,但也希望能够计算每个范围内有多少家公司有不同。
对于 table 的示例,结果将是这样的:
scopeID
Total_disctinct_companies_of_each_scope
Total_companies
1
3
4
2
2
4
这意味着每个范围都应使用不同的 companyID 进行计数,但同时我希望能够计算独立于范围的公司总数。
我一直在尝试使用 over() 和分区依据,但由于我没有那么多经验,所以我真的不知道该怎么做。
我正在使用 MariaDB。
非常感谢!!
您可以单独计算您的不同公司总数,然后将其加入一个查询,该查询returns 每个范围的总数。
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
Returns
scopeID
total_distinct_companies_of_each_scope
total_companies
1
3
4
2
2
4
您好,我有一个 table 具有以下架构
ID | companyID | scopeID |
---|---|---|
1 | 1 | 2 |
2 | 2 | 1 |
3 | 3 | 2 |
4 | 3 | 1 |
5 | 4 | 1 |
6 | 4 | 1 |
我希望能够计算公司总数,但也希望能够计算每个范围内有多少家公司有不同。
对于 table 的示例,结果将是这样的:
scopeID | Total_disctinct_companies_of_each_scope | Total_companies |
---|---|---|
1 | 3 | 4 |
2 | 2 | 4 |
这意味着每个范围都应使用不同的 companyID 进行计数,但同时我希望能够计算独立于范围的公司总数。
我一直在尝试使用 over() 和分区依据,但由于我没有那么多经验,所以我真的不知道该怎么做。
我正在使用 MariaDB。
非常感谢!!
您可以单独计算您的不同公司总数,然后将其加入一个查询,该查询returns 每个范围的总数。
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
Returns
scopeID | total_distinct_companies_of_each_scope | total_companies |
---|---|---|
1 | 3 | 4 |
2 | 2 | 4 |