sql - 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。
太感谢了!!
解决方案
您可以单独计算不同公司的总数,然后将其加入到返回每个范围总计的查询中。
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 |
推荐阅读
- c++ - SDL Window won't pop up
- django - Configuring Django Production Settings and Content Security Policy
- python - doesn't test all code when fixing my string index out range
- matlab - 在 MATLAB 中使用 parfor 对数组进行间接索引
- java - How to split the string using Pattern/Matcher with multiple occurrences of pattern?
- dask - Loading Cassandra Data into Dask Dataframe
- r - R add column to match another dataframe
- python - Python-Generating numbers according to a corellation matrix
- android - getGeofenceTransition() 在将 ResultReceiver 作为 Intent 额外传递时返回 -1
- java - 如何使用硒在谷歌浏览器中获取网络文件?