请解释这段包含COUNT与GROUP BY的SQL分组统计代码逻辑
解析SQL代码:
SELECT A, COUNT(A) AS A_Counts, B, COUNT(B) AS B_Counts FROM Table GROUP BY A,B; 执行过程
- 分组逻辑:首先对
Table中的所有数据,按照A和B的组合值进行分组——只有当两行的A值完全相同且B值也完全相同时,才会被分到同一组里(NULL会被视为独立的分组值)。 - 聚合计算:针对每个分组,分别执行两个聚合统计:
COUNT(A):统计当前分组内,A列取值不为NULL的记录行数,结果别名为A_CountsCOUNT(B):统计当前分组内,B列取值不为NULL的记录行数,结果别名为B_Counts
- 结果输出:每个分组对应输出一行数据,包含该组的
A值、B值,以及上述两个统计结果。
输出结果含义
- 每一行代表一组
A与B的唯一组合 A_Counts:该组合下,A列非空的记录总数B_Counts:该组合下,B列非空的记录总数
示例说明
假设Table有如下数据:
| A | B |
|---|---|
| 1 | 2 |
| 1 | 2 |
| 1 | NULL |
| 2 | 3 |
| 2 | NULL |
| 2 | 3 |
执行代码后得到的结果为:
| A | A_Counts | B | B_Counts |
|---|---|---|---|
| 1 | 3 | 2 | 2 |
| 1 | 1 | NULL | 0 |
| 2 | 3 | 3 | 2 |
| 2 | 2 | NULL | 0 |
内容的提问来源于stack exchange,提问作者Amrit
相关产品推荐
相关产品推荐

